_______ / / / ____/_____ ____ ____ _____ ______ _____ ______ / /___ / _ //___/ /__ / /___ //__ __//____//_____/ /___ // // /// //_// //__// // //___ //____ ____/ // // /// /___/ /___ / // /____//___ / / // // ///___ // || // // // //___ ____/ / /______//____//____/// // // // // /____//_____/ SOCRATES (tm) v1.10 (C) Copyright 1990 Mikronetics All Rights Reserved Documentation by Robert D. Swift Socrates BBS (v1.10) License and Distribution COPYRIGHT The SOCRATES program and all support programs described in this document and included in the SOCRATES system distribution files are copyrighted and all rights are reserved by Mikronetics and Michael A. Jacobs. THIS IS NOT FREE SOFTWARE! If you paid a "public domain" vendor for this program, you paid for the service of copying the program, and not for the program itself. Rest assured that nothing ever gets to the originators of this product from such a sale. You may evaluate this product, but if you make use of it, you must register your copy. We offer several inducements to you for registering. First of all, you receive the most up-to-date copy of the program that we have -- and we do update the product on a regular basis. You also receive support for SOCRATES -- which can be quite valuable at times. And finally, we have a few utilities not included in the evaluation package. Make no mistake, however - this is a fully functional version of SOCRATES and not "crippled" in any way. TRADEMARKS SOCRATES is a trademark of Mikronetics. Many product names found throughout this manual are trademarks of various companies. These include: BinkleyTerm Bit Bucket Software DSZ Omen Technologies Fido & FidoNet Tom Jennings and Fido Software IBM International Business Machines MS-DOS Microsoft Corp. Plato Nippon Electric Company (NEC) X.00 Raymond L. Gwinn WARRANTY AND DISCLAIMER The author makes no warranties, expressed or implied, as to the quality or performance of these programs. The author will not be held liable for any direct, indirect, incidental or consequential damages resulting from the use of these programs. Your use of these programs constitute your agreement to this disclaimer and your release of the author from any form of liability or litigation. - i - Socrates BBS (v1.10) License and Distribution DISTRIBUTION This is "user-supported" software. You are hereby granted a license to distribute this copy of SOCRATES and its documentation, subject to the following conditions: 1. SOCRATES may be distributed freely without charge in evaluation form only. 2. SOCRATES may not be sold, licensed, or a fee charged for its use. If a fee is charged in connection with SOCRATES, it must cover the cost of copying or dissemination only. Such charges must be clearly identified as such by the originating party. Under no circumstances may the purchaser be given the impression that they are buying SOCRATES itself. 3. SOCRATES must be presented as a complete unit, including this documentation. Neither SOCRATES nor its documentation may be amended or altered in any way. 4. By granting you the right to distribute the evaluation form of SOCRATES, you do not become the owner of SOCRATES in any form. Any other use, distribution or representation of SOCRATES is expressly forbidden without the written consent of Michael A. Jacobs. REGISTRATION Registering SOCRATES allows you to use the product after the trial period. Registered SOCRATES users get the current copy of SOCRATES on disk and priority when calling the SOCRATES Software support BBS (we guarantee no support to unregistered users). Most importantly, registered users know they are helping to make sure that high-quality software like SOCRATES continues to be sold in this low-cost way. SOCRATES registration costs $40 US. Payment may be in the form of check or money order in US currency. Payment should be made out to: Mikronetics 2114 Weatherton Dr. Wilmington, DE 19810 United States of America - ii - Socrates BBS (v1.10) Contents TABLE OF CONTENTS COPYRIGHT i TRADEMARKS i WARRANTY AND DISCLAIMER i DISTRIBUTION ii REGISTRATION ii TABLE OF CONTENTS iii 1. INTRODUCTION 1.1 Program Description 1 1.2 Why Socrates? 2 1.3 Acknowledgements 3 1.4 System Requirements 4 1.5 SOCRATES Files 4 2. INSTALLING SOCRATES 2.1 The SOCRATES Directory 6 2.2 Conditions, Signals and States 6 2.3 The Initialization File 7 2.4 Message Areas and Directories 10 2.5 File Areas and Directories 11 2.6 SOCRATES Program File 13 2.7 Bulletins And Display Files 14 3. SOCRATES PROGRAM FILE 3.1 Overview 15 3.2 Menus 15 3.3 Responses 17 3.4 Commands 20 3.5 File Lists 24 3.6 Shells and Parameters 25 3.7 Putting It All Together 26 4. RUNNING SOCRATES 4.1 Command Line Parameters 28 4.2 User's Special Keys 28 4.3 Running Stand-Alone 29 4.4 Running With A Front End 30 4.5 Re-Entering SOCRATES 32 5. THE SYSTEM OPERATOR'S ROLE 5.1 SysOp Commands 33 5.2 User File Maintenance 34 5.3 Message Area Maintenance 35 5.4 Socrates Type Message Linking 37 - iii - Socrates BBS (v1.10) Contents APPENDIX 1 - Use of Delimiters 38 APPENDIX 2 - Evaluating Conditions 39 APPENDIX 3 - Initialization File Settings 43 APPENDIX 4 - BBS Program Commands 72 APPENDIX 5 - Shell Parameters 144 APPENDIX 6 - TimeBanks & Multipliers 145 APPENDIX 7 - FidoNet 147 APPENDIX 8 - Registration Form 148 INDEX 149 - iv - Socrates BBS (v1.10) Introduction 1. INTRODUCTION 1.1 Program Description The SOCRATES BBS package has been designed to provide the ultimate in flexibility. It can be better described as a BBS "construction set" because all of the menus, user responses and system activities are defined by the SysOp. In a sense, the SysOp is actually a "system programmer" and SOCRATES executes the "programmed" configuration. In addition to the usual programmable menu choices found in other systems, SOCRATES even allows you to choose the format of the message bases used. These can be either sequential message bases such as used in most FidoNet style BBS programs, or you can choose to use SOCRATES' own message base format. The SOCRATES message base groups messages in an area by subject, thus allowing you to quickly access all messages related to a particular topic. SOCRATES is fully FidoNet compatible when used with a front- end mailer such as BinkleyTerm. In addition, the message areas can be set up Fido style so that existing message utilities can be used. Ease of operation, flexibility and compatibility are the major strengths of SOCRATES. If this is what you are looking for in a BBS, look no further... SOCRATES is here! - 1 - Socrates BBS (v1.10) Introduction 1.2 Why Socrates? I have never been one to easily fit into molds. Although many BBS systems out there are 'configurable', one could never make any real changes. Change the text in the menus, alter the messages, sure, but it was still the same thing. So, being a habitual programmer, I started work on my own BBS program. As all good programmers should do, I broke the problem down into its components. At first, I was just going be yet-another-custom-BBS, but it occurred to me, there must be many other malcontents out there as well, but who don't have the time to write their own BBS program. And thus became my vision of a meta-BBS system, where all the BBS functions would be there, and it could be up to the Sysop to decided how he/she/it wants to put it together. Individuality, what a concept! So now you're saying, 'Ok, that answers "Why Socrates?," but why "Socrates?"'. At the University of Delaware, (where I learn the underlying principal of this arcane art) there was this obscure mainframe system called 'Plato' (ah ha! a clue...). On it, there was a message system called 'notesfiles' which worked in a subject based system: each subject had a base note and a list of associated responses. I liked this system much better then the way Fido and the gang dealt with it. Even when using links, after reading a subject, you still had to wade through the notes again when you move on. But on Plato, if you weren't interested in a subject, just go on to the next one. So, I borrowed this idea and wrote myself a message reader. At the time, though, I wasn't very well studied up on Ancient Greece, and chose to called it Socrates, thinking it was Plato who taught Socrates. As it happened, I was wrong; Socrates taught Plato who taught Aristotle (who taught Alexander the Great who conquered Greece, Asia Minor, and Persia and was eventually declared ZC of Zone 2.) But Aristotle was 9-letters long, and Socrates was the magical 8-letters long, and .SOC made a good extension for my system files, so Socrates it was. - 2 - Socrates BBS (v1.10) Introduction 1.3 Acknowledgements I'd like to thank the academy, my family, the director, the producer, my good friend Jack Nicholson... The most thanks to goes to Bob Swift, the man who took the crap I wrote as documentation and turned it into this lovely work of art. I also appreciate the efforts of my beta-testers who, I'm assuming from their lack of responsiveness, found absolutely no bugs... ... and Mike Epler who told me what he wanted for files functions when I had no concept. And of course, Thomas Jefferson. Michael A. Jacobs aka Mike J (FidoNet 1:150/199) - 3 - Socrates BBS (v1.10) Introduction 1.4 System Requirements SOCRATES will run on an IBM PCjr, PC, XT, AT, PS/2, or true compatible with one hard drive and one floppy drive, or two floppy drives, and with at least 200k of free memory. For a few functions, such as the DOS Shell, more memory may be required. SOCRATES will also require that a FOSSIL program be loaded and, of course, a modem. To get full use of SOCRATES your modem must meet certain standards as well. The Carrier Detect signal should not be forced high (on) by the modem, so that SOCRATES can tell when you are on-line. This is usually controlled by the setting of a dip switch on the modem, or a modem command. The DTR (Data Terminal Ready) signal should not be ignored by the modem. 1.5 SOCRATES Files SOCRATES requires that the following files be located within the system PATH: RELOGIN.EXE - Re-enter Socrates after exit SOC-MSG.EXE - Maintains message areas SOC-SCAN.EXE - Maintains Socrates message areas SOC-USER.EXE - Maintains user file SOCRATES.EXE - The SOCRATES program itself In addition, the following files are used when setting up or modifying the BBS configuration and must be in the system PATH: CR-AREAS.EXE - Compile message area index CR-FILES.EXE - Compile file area index CR-INITS.EXE - Compile initialization file CR-SOC.EXE - Compile configuration file - 4 - Socrates BBS (v1.10) Introduction SOCRATES requires the following files to be in the current directory when the program is started. These files are created using the compile programs listed above: AREAS.SOC - Message area index COMM.SOC - Command list COMMINDX.SOC - Command list index FILES.SOC - File area index FLST.SOC - Files list FLSTINDX.SOC - Files list index INITS.SOC - Initialization data MENU.SOC - BBS menus MENUINDX.SOC - BBS menus index MULT.SOC - Download & Time limits MULTINDX.SOC - Multiplier index QUOTETRK.SOC - Quotes file pointer (if req'd) RESP.SOC - User responses RESPINDX.SOC - User responses index The following files contain the user data for the BBS and must be in the current directory when SOCRATES is started. If these files are missing, they will be created when a user logs onto the system or when SOC-USER is run: USERS1.SOC - User data USERS2.SOC - User data USERS3.SOC - User data The SOCRATES archive contains the following files: CR-AREAS.EXE - Compile message area index CR-FILES.EXE - Compile file area index CR-INITS.EXE - Compile initialization file CR-SOC.EXE - Compile configuration file READ_ME.1ST - Last minute release notes RELOGIN.EXE - Re-enter Socrates after exit SOC-AREA.TXT - Sample message area file SOC-FILE.TXT - Sample files area file SOC-INIT.TXT - Sample initialization file SOC-MSG.EXE - Maintains message areas SOC-PROG.TXT - Sample program definition file SOC-SCAN.EXE - Maintains Socrates message areas SOC-USER.EXE - Maintains user file SOCRATES.DOC - This documentation file SOCRATES.EXE - The SOCRATES program itself SOCRATES.REG - Registration form SOCRATES.REV - Revisions list SAMPLE.ZIP - Various example files - 5 - Socrates BBS (v1.10) Installing Socrates 2. INSTALLING SOCRATES 2.1 The SOCRATES Directory As with installing any new program on your system you have to start at the beginning. That is, "Where do I put it?" Although the Socrates programs can be placed anywhere in your path, it is strongly recommended that you create a separate sub-directory for the BBS. Throughout this document, we will use the example of the files installed in the C:\SOCRATES sub-directory. Okay, you have a directory. Now, what goes into this directory? First, copy all the files from the distribution disk (or archive) into the directory. This will provide you with much of what you need but there are still a few things that have to be done before you have a fully functional, working system. You will have to create sub-directories for the file and message areas that you want to keep, as well as customizing and compiling the configuration and program files. Sound complicated? It really isn't if you take your time and work through it one step at a time. 2.2 Conditions, Signals and States You're probably thinking to yourself, "what do they mean by conditions, signals and states?" Simply put, these provide the flexibility and programming power of the SOCRATES bulletin board system. Signals are like "keys" assigned to a user. The command files can check if a user has a certain signal enabled and perform differently depending on whether they do or don't. This is useful for setting conditions independent of a user's privilege level. There are 256 signals available, numbered from 0 to 255. States are similar to signals except that they are set by the system while a caller is on-line and are reset when the caller logs off. These are useful for setting conditions depending on what has happened while the user is on line, such as only allowing one time through a bulletin or only paging the SysOp once. There are 256 states available, numbered from 0 to 255. Conditions are constants, variables or formulae that evaluate to either a logical true or false state. These can then be applied to some of the lines in the initialization file and most of the lines in the program file to alter the way the SOCRATES engine deals with these command lines. See APPENDIX 2 for a complete list of the constants and variables used in defining conditions. - 6 - Socrates BBS (v1.10) Installing Socrates 2.3 The Initialization File This is the file that tells the SOCRATES engine a little about your system and how to communicate with your modem. This file is a straight text file and can have any valid file name. There is no default name but a commonly used name is SOC-INIT.TXT (pronounced sock-in-it). The initialization file commands include the following groups: Modem Settings PORT comm port BAUD default baud rate MODEMINIT initialization string MODEMHANGUP hang-up string Logon Settings NAMEPROMPT user name prompt string PASSWORDATTEMPTS maximum password attempts LOGONTIME maximum time to log on PRIVATESYSTEM no new users allowed FORGOTPASSWORDCOMM wrong password commands FORGOTPASSWORDMENU wrong password menu New User Settings NEWUSERPRIV privilege level NEWUSERHELP help level NEWUSERCOMM1 commands before password NEWUSERCOMM2 commands after password NEWUSERSCREENWIDTH screen width NEWUSERSCREENLENGTH screen length NEWUSERSIGNALS initial signals NEWUSERMENU first menu displayed Menu and Display Screen Settings WELCOMECOMM welcome file displayed INTROCOMM commands after logon FIRSTMENU first menu displayed FidoNet Settings ZONE zone number NET net number NODE node number POINT point number - 7 - Socrates BBS (v1.10) Installing Socrates Time Limit Settings TIMELIMIT time limits multiplier SESSIONTIMELIMIT default time limit for session DAILYTIMELIMIT default time limit for day EXCEEDEDDAILYTLIMCOMM commands after max time ONLINEUPLOADREFUND on-line refund multiplier ACTIVETIMEBANKUPLOADREFUND active time bank refund multiplier PENDINGTIMEBANKUPLOADREFUND pending time bank refund multiplier DAILYTIMEBANKROLLOVER daily pending to active timebank transfer Message Area Settings CLEARBEFOREMESSAGE clear screen before msg CUTATSEENBY don't show SEEN-BY lines READPRIVATE allow reading private msg WRITEPRIVATE allow writing private msg FORCEPRIVATE force msg to be private ALIAS use alias in FROM: field ANONYMOUS use anonymous name in msg ANONYMOUSNAME anonymous name to use FIDONET identify netmail area DEFAULTCRASHON default "crash" setting DEFAULTFILEATTACHON default "attach" setting DEFAULTKILLSENTON default "kill" setting SETCRASH allow changing "crash" SETFILEATTACH allow changing "attach" SETKILLSENT allow changing "kill" ALLOWQUOTING allow user to quote SKIPMESSAGEINPUT skip initial msg input APPENDORIGIN add ORIGIN: line ORIGINLINE ORIGIN: line string EDITOUTSIDEFILE filename for outside edit File Area Settings FILESLISTFILE name of file list file SHOWFILEDATE display file date FILESMULT files limits multiplier SESSIONBYTESTHRESHOLD max session d/l bytes DAILYBYTESTHRESHOLD max daily d/l bytes TOTALBYTESTHRESHOLD max total d/l bytes SESSIONFILESTHRESHOLD max session d/l files DAILYFILESTHRESHOLD max daily d/l files TOTALFILESTHRESHOLD max total d/l files SESSIONBYTESRATIO max session d/l:u/l ratio DAILYBYTESRATIO max daily d/l:u/l ratio TOTALBYTESRATIO max total d/l:u/l ratio SESSIONFILESRATIO max session d/l:u/l ratio DAILYFILESRATIO max daily d/l:u/l ratio TOTALFILESRATIO max total d/l:u/l ratio - 8 - Socrates BBS (v1.10) Installing Socrates Miscellaneous Settings HOTKEYS select hot key operation USEPAUSEKEY use new pause key PAUSEKEY new pause key to use USESTOPKEY use new stop key STOPKEY new stop key to use MOREPROMPT string for full screen LOGFILE system log filename INACTIVITYTIMELIMIT inactivity before logoff DEFAULTTIMESCALLEDTHRESHOLD base number for times called TIMESCALLEDMULT calls limit multiplier DEFAULTSINCELASTCALLEDTHRESHOLD base number for time since last called SINCELASTCALLEDMULT time since last call limit multiplier STARTCHATMSG string at start of chat ENDCHATMSG string at end of chat USERDELETE user deletion criteria See APPENDIX 3 for a complete description of the command settings and their use. Note that all blank lines are ignored as well as anything following a semi-colon (;) in a non-blank line. This will allow you to insert comments in your control files. The maximum line length allowed in the control file is 127 characters. Once the initialization file is complete, it will have to be compiled before SOCRATES can use it. This is done by executing the CR-INITS.EXE program which will read the initialization file and produce the compiled files MULT.SOC and INITS.SOC which SOCRATES will use. The CR-INITS.EXE program is executed as follows: CR-INITS <initializationfilename> Note that you will have to re-compile the initialization file each time after a change is made before the change will take effect. - 9 - Socrates BBS (v1.10) Installing Socrates 2.4 Message Areas and Directories Now that you have the initialization file completed, the next step is to set up your message areas. First, you should decide what areas you wish to have on your system and whether these areas will be used as Fido areas or SOCRATES areas. You will then need to create a sub-directory for each area. For our example, we will set up a general message area for all users, a private message area for higher priority users, and a Fido NetMail area. We would create the sub- directories: C:\SOCRATES\MSGAREAS\GENERAL C:\SOCRATES\MSGAREAS\PRIVATE C:\SOCRATES\MSGAREAS\NETMAIL Now that we have our directories, we have to tell SOCRATES about them. This is done in the areas definition file which is an ordinary text file. There is no default file name for this file but a commonly used name is SOC-AREA.TXT. This file is quite straightforward because each line defines a message area and only contains two entries, path to message area and message area type, separated by spaces. The path to the message area need not end in a trailing backslash. The message area type entry must be either Fido or Socrates. Remember that the Socrates areas differ from the Fido areas in that they are subject-oriented and special index files are maintained in the sub-directory. If the area type entry is missing, SOCRATES will assume that the area is a Fido area. Each message area listed in the definition file is assigned a number by SOCRATES, sequentially beginning with 1. This message area number is the number used for the "a=" comparisons when setting conditions. Note that all blank lines are ignored as well as anything following a semi-colon (;) in a non-blank line. This will allow you to insert comments in your control files. The maximum line length allowed in the control file is 127 characters. - 10 - Socrates BBS (v1.10) Installing Socrates Once the message area definition file is complete, it will have to be compiled before SOCRATES can use it. This is done by executing the CR-AREAS.EXE program which will read the definition file and produce the compiled file AREAS.SOC which SOCRATES will use. The CR-AREAS.EXE program is executed as follows: CR-AREAS <messageareadefinitionfilename> Note that you will have to re-compile the message area definition file each time after a change is made before the change will take effect. 2.5 File Areas and Directories If you plan to have any areas for uploading or downloading on your system, you will have to set these up as file areas. First, you should decide what areas you wish to have on your system and then you will then need to create a sub-directory for each area. For our example, we will set up a public file area for all users, a private file area for higher priority users, and a Fido Network files area. We would create the sub- directories: C:\SOCRATES\FILEAREA\PUBLIC C:\SOCRATES\FILEAREA\PRIVATE C:\SOCRATES\FILEAREA\NETFILES Now that we have our directories, we have to tell SOCRATES about them. This is done in the areas definition file which is an ordinary text file. There is no default file name for this file but a commonly used name is SOC-FILE.TXT. This file is quite straightforward because each line defines a file area and only contains two entries, path to download area and path to upload area, separated by spaces. The paths to the areas need not end in trailing backslashes. If the upload path entry is missing, SOCRATES will assume that the upload path is the same as the download path. Each file area listed in the definition file is assigned a number by SOCRATES, sequentially beginning with 1. This message area number is the number used for the "FA=" comparisons when setting conditions. - 11 - Socrates BBS (v1.10) Installing Socrates Note that all blank lines are ignored as well as anything following a semi-colon (;) in a non-blank line. This will allow you to insert comments in your control files. The maximum line length allowed in the control file is 127 characters. Once the file area definition file is complete, it will have to be compiled before SOCRATES can use it. This is done by executing the CR-FILES.EXE program which will read the definition file and produce the compiled file FILES.SOC which SOCRATES will use. The CR-FILES.EXE program is executed as follows: CR-FILES <fileareadefinitionfilename> Note that you will have to re-compile the file area definition file each time after a change is made before the change will take effect. Now that you have your file area control file compiled, you have one more thing to do before your system's file areas are ready. That is to build a files list file in each of the specified download areas. The name of this file list file is defined by the FILESLISTFILE entry in your initialization file. The files list file is a text file listing the files available for download in that area. Each file is listed on a separate line, followed by a description which will be displayed to the user when they ask for a list of the files. If the first character on a line is a space or an asterisk, then the line is displayed as is. If the first character is an at-sign (@), then the remainder of the file is not displayed. Otherwise, all characters up to the first space are considered a filename and the download directory is searched for that file. If the file is found, SOCRATES will display the filename, the file size and the remainder of the line. If the file is not found, SOCRATES will display the filename, a brief message that the file is unavailable and the remainder of the line. - 12 - Socrates BBS (v1.10) Installing Socrates 2.6 SOCRATES Program File This is the file where you get to let SOCRATES know the design of your BBS and how it should operate. The program file contains the code for all of the BBS menus, the valid user responses and the actions that SOCRATES should take as a result of the various responses. In short, this is where you get to program your BBS. The SOCRATES program file is an ordinary text file. There is no default file name for this file but a commonly used name is SOC-PROG.TXT. There are four types of modules in the SOCRATES program file. These modules are menu, response, command and filelist. Some of the modules have "special codes" associated with them as well as a set of commands. See APPENDIX 4 for a complete description of the program commands and their use. In addition, a sample program file is included to demonstrate some of the features of the system. Note that all blank lines are ignored as well as anything following a semi-colon (;) in a non-blank line. This will allow you to insert comments in your control files. The maximum line length allowed in the control file is 127 characters. Once the program file is complete, it will have to be compiled before SOCRATES can use it. This is done by executing the CR-SOC.EXE program which will read the program file and produce the compiled files MENUINDX.SOC, MENU.SOC, RESPINDX.SOC, RESP.SOC, COMMINDX.SOC, COMM.SOC, FLSTINDX.SOC and FLST.SOC which SOCRATES will use. The CR-SOC.EXE program is executed as follows: CR-SOC <filename> [filename] [filename] ... Note that you will have to re-compile the program file each time after a change is made before the change will take effect. - 13 - Socrates BBS (v1.10) Installing Socrates 2.7 Bulletins And Display Files The other files used by SOCRATES are files which are displayed to the user. These files can be either ASCII or ANSI (or just about anything else) and SOCRATES can be programmed to send the appropriate type of file depending on the terminal type defined by the user (or by screen width, et cetera). These files can be defined by the initialization, such as welcome files, or they can be defined in the program file. Some examples of display files defined in the program file are help screens or bulletins. These files need not be compiled for SOCRATES to use them. - 14 - Socrates BBS (v1.10) Socrates Program File 3. SOCRATES PROGRAM FILE 3.1 Overview As stated earlier, the SOCRATES program file is where you can design the way that the SOCRATES engine will execute your BBS. This file is comprised of a number of modules, each module defining part of the system. Each module may be a menu, response list, command list or file list, and is identified by the type and an assigned name. The lines that follow a module label form the module itself until the end of the file or the occurrence of the next module label. Each of the module types is described below. A complete list of the program commands can be found in APPENDIX 4. 3.2 Menus The menu module begins with a line like: MENU <label> to indicate that the following lines define a menu. The lines that follow make up the actual menu and are in the format: <delimitedstring>[/] [condition] If the condition on the line evaluates to TRUE, the string is displayed (without the delimiters), followed by a carriage return and linefeed if the delimited string is followed by a slash. If there is no slash present, the carriage return and linefeed are suppressed. If the condition is missing, it is assumed to be TRUE. - 15 - Socrates BBS (v1.10) Socrates Program File For example, the menu: Menu Main 'Main Menu'/ h=0 '---------'/ h=0 'A)rea Change'/ h=0 'G)oodbye'/ h=0 'Command:' h=0 + h>=2 'Command (A,G):' h=1 will display as follows if the help level, h, is set to 0: Main Menu --------- A)rea Change G)oodbye Command: Note that the cursor will be left following the colon on the "Command:" line. There are two types of special codes allowed for use in menus. These are display codes and control codes. Display codes cause special information to be displayed while control codes influence what is displayed further on in the menu. If a display code is followed by a slash, the displayed information will be followed by a carriage return and linefeed. Special codes are always delimited by asterisks. The special codes supported are: *CLEAR* *MSGNUM* *HIGHEST* *SUBJECT* *SKIP* *FORCE* *UNFORCE* - 16 - Socrates BBS (v1.10) Socrates Program File For example, consider our original menu with some special codes added: Menu Main *SKIP* 'Main Menu'/ h=0 '---------'/ h=0 'A)rea Change'/ h=0 'G)oodbye'/ h=0 *FORCE* 'Command:' h=0 + h>=2 'Command (A,G):' h=1 So, what would happen now? If commands were stacked up and the help level was set to zero when this menu is run, it would hit the *SKIP* statement and would not display the menu until it reached the *FORCE* statement. It would then display the "Command:" line, but not the "Command (A,G):" line because its condition evaluated to FALSE. For another example, consider that your user is in a long menu (perhaps listing message areas) and they hit Control-C. Okay, the rest of the displayed text is skipped, but you want the prompt to come up no matter what, otherwise your user would just be sitting there with the computer staring back at him. Before the prompt, put in the *FORCE* command and, after skipping for a bit, it will display the prompt line anyway. Clever, huh? 3.3 Responses The next module type is the response module which begins with a line like: RESP <label> to indicate that the following lines define a list of valid user responses. The lines that follow make up the actual response list and are in the format: <responsestring> [mod] [*]<command> [label] [condition] Looks pretty complicated, huh? Again, not really if you take it one piece at a time. The <responsestring> is a valid user response enclosed within delimiters. This must match the user input EXACTLY unless there are modifiers present. Note that the responses are continuous strings of characters and if you put any spaces in the string, the response CANNOT be matched. - 17 - Socrates BBS (v1.10) Socrates Program File The [mod] are optional modifiers to the user's response. These modifiers must be enclosed in square brackets and separated by commas. At present, there are only two modifiers available to you, these being: O - ONE, user's input trimmed to one character C - CAPS, user's input converted to all caps If there is an (optional) asterisk immediately prior to the command, then the command is not executed if there are user inputs stacked up. If the user's input, after the (optional) modifiers are applied, exactly matches the response string then the <command> is executed. Many of the commands require a parameter. When a parameter is required, it must be delimited by any of the following delimiter pairs: () [] {} <> See APPENDIX 4 for a complete description of the available commands. If the command is executed successfully, the menu [label] is the next menu executed. If the command fails, SOCRATES will re-execute the current menu. The final entry on the response line is the [condition]. The response line is only processed if the condition evaluates to TRUE. When a response list is executed, it starts at the first line, and works its way down, evaluating the condition on each line. If the condition is FALSE, SOCRATES proceeds to the next line. If the condition is TRUE, then SOCRATES takes the user's input, changes it according to the modifiers, then compares it to the response string. If these are different, SOCRATES skips to the next line. If there is a match, then the command is executed (unless skipped with the [*] option). If the command is executed successfully, then the next-menu [label] is executed. Should the command fail, then the current menu is executed again. If the entire RESP list fails to turn up a match and no RESP line is run, then SOCRATES displays an error message to the user and re-executes the current menu. - 18 - Socrates BBS (v1.10) Socrates Program File For example, a response module may look like: 'A' [o,c] null Areas 'G' [o,c] logoff 'SECRETS' [c] file(secrets.txt) p>=100 'oop' commlist(orangutan) s25 In the above example, anything starting with an "a" or a "g" in either upper or lower case will match; "SECRETS" in any combination of upper and lower case will match; and "oop" in lower case only will match. Note that order in a response file is very important because SOCRATES will execute the first response line that matches. For example, in the response module: 'BEEP' [c] page 'B' [o,c] null bulletins 'BEEP' MUST come first. If the 'B' line was first, then when the user typed BEEP, SOCRATES would match the 'B' because "beep" would be capitalized and trimmed to one character, thus becoming 'B'. There are four special codes which are available to this module. These both allow user input which is applied to other commands. These codes, which are delimited with asterisks, are: *@* accept any text as user input *#* accept a number as user input *!* accept any text as user input and do not cancel hotkeys *%* accept a number as user input and do not cancel hotkeys See APPENDIX 4 for complete information and examples of the proper use of the response module special codes. - 19 - Socrates BBS (v1.10) Socrates Program File 3.4 Commands The command module is simply a collection of valid commands with execution conditions (similar to the way commands are processed in the response module) which can be referenced by a single "COMMLIST" command. This allows you to develop your own command subroutine functions. The command module begins with the line: COMM <label> to indicate that the following lines define a list of commands. The lines that follow make up the actual response list and are in the format: <command> [(parameter)] [condition] There are three special codes which are available to this module. These all allow you to end further execution of the command list under certain conditions. These codes, which are delimited with asterisks, are: *FAILBREAK* end as failed command if previous command failed. *FAILSUCCESS* end as successful command if previous command failed. *SUCCESSBREAK* end as successful command if previous command was successful. - 20 - Socrates BBS (v1.10) Socrates Program File The commands available for use in both the response module and the command module are grouped as follows: General Commands NULL does nothing LOGOFF display filelist and exit FILE display file PAUSE pause specified time FILELIST execute a file list COMMLIST execute command list VERSION display Socrates version PAGE call for SysOp USERLIST display user list INFO display user stats SHELL shell specified command EXIT exit with errorlevel WRITE display string WRITELN display string with CRLF LASTTIMECALLED display last time called TIMESCALLED display # times called NUMOFCALLERS display # of callers QUOTE display from quote file LINE display user input line CONTINUOUS display user input lines ASSIGNFILE specify file for output USERASSIGNFILE specify file for output STARTFILEOUTPUT output displays to file STOPFILEOUTPUT output displays normally SETPRIV set user privilege level FORCEMORE turn "more" on FORCEDONTMORE turn "more" off RESTOREMORE restore "more" to user RESETMORE zero "more" line count MORENOW force a "more" - 21 - Socrates BBS (v1.10) Socrates Program File Change / Display Commands SHOWCHG display user's data SHOWNAME display user name SHOWLASTNAME display user last name SHOWFIRSTNAME display user first name SHOWDATA display user data SHOWPSWD display user password SHOWWIDTH display user scrn width SHOWLENGTH display user scrn length SHOWMORE display user MORE status SHOWHELP display user help level SHOWCOMMINFO display comm port status SHOWCOMMPORT display comm port number SHOWPRIV display user privilege SHOWTIMELEFT display user time left SHOWTIME display a time stamp SHOWTERM display user term type CHGNAME change user name CHGDATA change user data CHGPSWD change user password CHGWIDTH change user scrn width CHGLENGTH change user scrn length CHGMORE change user MORE status CHGHELP change user help level CHGTERM change user term type Generic Message Commands AREA change message area ABORT quit (don't save pointer) SAVE quit (save pointer) MODPRIVATE change private flag MODFROM change From: MODTO change To: MODSUBJECT change Subject: MODATTACH change attach flag MODCRASH change crash flag MODKILLSENT change kill/sent flag MODFIDONETFROM change from address MODFIDONETTO change to address KILL delete message Fido Type Message Commands NEXT go to next message PREV go to previous message MSGNUM go to specified message LINKUP go to SEE-ALSO message LINKDOWN go to REPLY-TO message SHOW re-show current message HEADERS display message headers ENTER write a message RESPOND reply to current message (Note that Fido-type message area commands will do nothing in a Socrates-type message area.) - 22 - Socrates BBS (v1.10) Socrates Program File Message Edit Commands EDITFIDONET edit FidoNet TO: address EDITPRIVATE toggle Private flag EDITATTACH toggle FileAttach flag EDITKILLSENT toggle KillSent flag EDITCRASH toggle Crash flag EDITSAVE save message EDITABORT abort message EDITLIST list message so far EDITINSERT insert text after line EDITCONT add text to end of msg EDITDELETEFROM mark first line to delete EDITDELETETO mark last line and delete EDITEDIT edit specified line EDITCHGTO change the TO field EDITCHGSUBJ change the SUBJECT field EDITOUTSIDE invoke outside editor (Note that Edit functions will do nothing unless an ENTER, RESPOND, START, or ADD has been executed. The Edit functions will quit working after an EDITSAVE or EDITABORT has been executed.) Socrates Type Message Commands NEW go to next reply (new) MAIN go to next subject (new) AHEAD1 go to next reply REVERSE1 go to previous reply AHEAD advance <number> replies REVERSE back up <number> replies STAY display current message FORWARD1 go to next subject BACK1 go to previous subject FORWARD advance <number> subjects BACK back up <number> subjects GOSUBJ go to specified subject SUBJLIST display list of subjects START start a new subject ADD reply to current subject (Note that Socrates-type message area commands will do nothing in a Fido-type message area.) File Area Commands FILEAREA change file area LISTFILES list files in FILELIST DOWNLOAD shell with d/l command UPLOAD shell with u/l command - 23 - Socrates BBS (v1.10) Socrates Program File Time Bank Commands UNBANK use bank time on-line UNBANKALL use all bank time on-line SHOWACTIVETIMEBANK display time in active time bank SHOWPENDINGTIMEBANK display time in pending time bank Signal Commands SIGNALOFF turn off signal SIGNALON turn on signal State Commands STATEOFF turn off state STATEON turn on state See APPENDIX 4 for a complete description and examples of the proper use of the commands available for use in the response and command modules. 3.5 File Lists The final module type is the file list module. This module begins with the line: FLST <label> to indicate that the following lines define a list of files to be displayed. The lines that follow make up the actual files list and are in the format: <filename> [condition] The file is a file to be displayed. As much path as necessary may be included. When a File List is executed, each line is evaluated in turn. If the condition evaluates to be TRUE, then the file is displayed and processing goes on to the next line. If the condition evaluates to FALSE, then processing just skips to the next line. There are no special codes which are available to this module. - 24 - Socrates BBS (v1.10) Socrates Program File The concept is really pretty simple when illustrated with an example like: RESP bulletins 'B' [o,c] filelist(bulletins) main FLST bulletins lowpriv.bul p<10 highpriv.bul p>9 3.6 Shells and Parameters When using the SHELL, EDITOUTSIDE, DOWNLOAD, and UPLOAD commands, you are essentially executing another program. When executing another program, you will often need to send it command line parameters. Some things can be hard-coded, but many of the parameters are situational. For instance, in the DOWNLOAD, you shell out to an external file-transfer driver, and you will probably need to specify the Download path and possibly the user input (the filename). To pass data into the SHELL, you include parameters in the command data. A parameter is a percent sign (%) followed by a key letter. When SOCRATES executes the command, it converts the parameter into the actual data it represents. The parameters are: %1 - user's input %A - Port number (COMx:) %B - Baud rate %D - Download path (no trailing backslash) %U - Upload path (no trailing backslash) %% - a percent sign (%) - 25 - Socrates BBS (v1.10) Socrates Program File 3.7 Putting It All Together Having gotten this far, you should now have at least a "bare-bones" system, ready to run. Your directory structure (following our example) should look something like this: C:\SOCRATES\ | | |--MSGAREAS\ | | | |--GENERAL\ | | | |--PRIVATE\ | | | |--NETMAIL\ | | |--FILEAREA\ | |--PUBLIC\ | |--PRIVATE\ | |--NETFILES\ The files contained in the sub-directories are as follows: --------------------------------------------- | C:\SOCRATES\ | | | | RELOGIN.EXE SOC-MSG.EXE SOC-SCAN.EXE | | SOC-USER.EXE SOCRATES.EXE CR-AREAS.EXE | | CR-FILES.EXE CR-INITS.EXE CR-SOC.EXE | | AREAS.SOC COMM.SOC COMMINDX.SOC | | FILES.SOC FLST.SOC FLSTINDX.SOC | | MULT.SOC INITS.SOC MENU.SOC | | MENUINDX.SOC QUOTETRK.SOC RESP.SOC | | RESPINDX.SOC MULTINDX.SOC USERS1.SOC | | USERS2.SOC USERS3.SOC | --------------------------------------------- --------------------------------------------- | C:\SOCRATES\MSGAREAS\PUBLIC\ | | | | LINK.SOC SUBJ.SOC 1.MSG | | 2.MSG 3.MSG 4.MSG | | 5.MSG 6.MSG 7.MSG | | . | | . | | . | --------------------------------------------- - 26 - Socrates BBS (v1.10) Socrates Program File --------------------------------------------- | C:\SOCRATES\MSGAREAS\PRIVATE\ | | | | LINK.SOC SUBJ.SOC 1.MSG | | 2.MSG 3.MSG 4.MSG | | 5.MSG 6.MSG 7.MSG | | . | | . | | . | --------------------------------------------- --------------------------------------------- | C:\SOCRATES\MSGAREAS\NETMAIL\ | | | | 1.MSG 2.MSG 3.MSG | | 4.MSG 5.MSG 6.MSG | | . | | . | | . | --------------------------------------------- --------------------------------------------- | C:\SOCRATES\FILEAREA\PUBLIC\ | | | | FILES.BBS and all files for download | --------------------------------------------- --------------------------------------------- | C:\SOCRATES\FILEAREA\PRIVATE\ | | | | FILES.BBS and all files for download | --------------------------------------------- --------------------------------------------- | C:\SOCRATES\FILEAREA\NETFILES\ | | | | FILES.BBS and all files for download | --------------------------------------------- An example of an initialization file and a working program file are included in the SOCRATES archive. - 27 - Socrates BBS (v1.10) Running Socrates 4. RUNNING SOCRATES 4.1 Command Line Parameters There are four command line switches / parameters that can be used with the SOCRATES program. These are: /L local mode ####/B run with #### baud /1 run once then exit #/O set time limit override. if number is less then the user's normal time limit, use it. These switches will enable you to run SOCRATES locally (for testing or messaging), as a stand-alone BBS or under a "front end" program (like BinkleyTerm). With the exception of operating in "local" mode, you will likely want to operate SOCRATES from within a batch file. In all modes except the local mode, SOCRATES will require that a FOSSIL (Fido-Opus-Seadog Standard Interface Layer) program be loaded. This will handle all communications between SOCRATES and the communications port and modem. Although SOCRATES has been tested with a number of FOSSIL programs, one of the most commonly used is X.00 by Ray Gwinn. Please refer to the documentation that came with whichever FOSSIL that you choose to use for instructions on loading and proper use. 4.2 User's Special Keys While SOCRATES is running, the user can interrupt almost any display by entering either a Control-C or a Control-K. When the user enters a Control-S, the output is paused until the user types another key. When at any menu prompt, the user can stack future commands simply by separating them with spaces. For example, if the user is at the Main Menu, and they want to go into message area 1 and read message #10, all they have to do is type 'M A 1 10'. - 28 - Socrates BBS (v1.10) Running Socrates 4.3 Running Stand-Alone This is the operating mode where SOCRATES is the only program running. As such, it must handle all the duties of the BBS including answering the phone. In this mode, it is very important that the modem initialization and hang-up strings are set up properly. Although this method of operation can be started by simply changing to the SOCRATES sub-directory and entering the command: SOCRATES most people will opt to run the program from within a batch file so as to use the exit capabilities to perform other functions. This can be done by trapping the errorlevel that SOCRATES exits with and branching accordingly. An example of a batch file to execute the SOCRATES program follows: echo off cls c: cd\socrates :top socrates if errorlevel 2 goto games goto end :games [do whatever external games things you want] c: cd\socrates relogin goto top :end - 29 - Socrates BBS (v1.10) Running Socrates 4.4 Running With A Front End The other way of running SOCRATES is to have the program called by another program, such as a mailer like BinkleyTerm. The calling program looks after answering the phone and establishing the connection with the caller. It then transfers control to SOCRATES (usually by exiting with an errorlevel). When SOCRATES is run this way, it is started with the ####/B command line switch to indicate that there is a caller already on-line at #### baud, and the /1 switch to exit SOCRATES after the caller logs off and return control back to the calling program. You can also add the optional #/O switch to override the user's available time, because most mailers will provide the time to the next scheduled event when exiting to a BBS. This "front end" operating method will be necessary if you intend to exchange electronic mail through FidoNet. - 30 - Socrates BBS (v1.10) Running Socrates An example of a batch file to operate this style of BBS is as follows: echo off cls :bink-top c: cd\binkley bt if errorlevel 102 goto soc-mail if errorlevel 101 goto fidomail if errorlevel 100 goto maint if errorlevel 24 goto b2400 if errorlevel 12 goto b1200 if errorlevel 3 goto b300 goto end :b2400 set baud=2400 goto soc-top :b1200 set baud=1200 goto soc-top :b300 set baud=300 :soc-top c: cd\socrates socrates %baud%/B /1 if errorlevel 2 goto games soc-scan goto bink-top :games [do whatever external games things you want] c: cd\socrates relogin goto soc-top :soc-mail cd\socrates soc-msg soc-scan goto bink-top :fidomail [fidonet message packing] goto bink-top :maint [do all your regular maintenance] goto bink-top :end - 31 - Socrates BBS (v1.10) Running Socrates 4.5 Re-Entering SOCRATES By now, you will already have the idea that SOCRATES can be re-entered by the user without having to go through the whole log on sequence again. This will allow your callers to exit to external programs (games and such) and return to the BBS almost transparently. When the EXIT command is used, SOCRATES will create a file called EXITUSER.SOC. This file contains information about the current caller including name, baud rate and time remaining. When the RELOGIN program is executed, the EXITUSER.SOC file is renamed to RELOGIN.SOC, which is used to get the user's name, baud rate and time remaining the next time SOCRATES is run. The user is taken directly to the main menu, by- passing all of the log-in steps. If RELOGIN is called with the command line switch /T, the time remaining will be adjusted to account for the time spent outside of Socrates, by deducting the time spent outside from the time remaining. Do not use the RELOGIN.EXE program unless Relogin to the BBS is actually intended. - 32 - Socrates BBS (v1.10) The System Operator's Role 5. THE SYSTEM OPERATOR'S ROLE 5.1 SysOp Commands The SysOp has certain commands available to them while SOCRATES is in operation. The commands that are available while a user is on-line are: / or ? Display the name of the current user and the time that they have left. This will also display a list of Sysop keys. C Enter chat mode. The SysOp can exit this mode by entering a Ctrl-Z. Ctrl-A Enter simultaneous keyboard mode. Any keystrokes entered by the SysOp will be interpreted as input by the user. The SysOp can exit this mode by entering a Ctrl-Z. This mode is useful for leading a new user through the system. Z Reset the user's time limit. Alt-X Log the current user off of the system immediately. When SOCRATES is waiting for a caller, the commands available to the SysOp are: / or ? Display the list of Sysop keys. L Enter local session mode. Alt-X Exit the program and return to DOS. Ctrl-C Exit the program and return to DOS. - 33 - Socrates BBS (v1.10) The System Operator's Role 5.2 User File Maintenance The heart of any good BBS is it's users and most SysOps consider their user files to be among the most important files on their systems (even to the point of backing this list up to a floppy disk EVERY day). SOCRATES does much of the user file maintenance itself, such as adding new entries as required. Even so, there are still times that the SysOp must manipulate the data in this list (whether to correct spelling, adjust a user's privilege, or delete a user entirely). Included in the SOCRATES package is a program called SOC-USER.EXE which allows the SysOp to modify the user database at will. The program is extremely easy to operate. You simply change to the directory where your USERS1.SOC, USERS2.SOC and USERS3.SOC files reside and enter "SOC-USER". The program can also be called with the command line option of /A to send all display in ANSI format which can be redirected for remote maintenance. When activated, the program will display the data for the first user in your user list. From this screen, you will be able to modify any of the data for this user, or select a different user record to work on. If you enter a question mark, a help screen will be displayed as follows: SOC-USERS - Socrates User File Editor Socrates BBS System v1.10 -- Copyright 1990, Mikronetics Commands: Movement Editing Deleting Adding > Next N Name K Kill + New Entry < Prev P Password U Unkill F First V Privilege C Criteria Deletion E End H Help ! Purge / Search M More T Terminal ------------ W Width # DL/UL amounts L Length 1 Active TimeBank S Signals 2 Pending TimeBank D Data B Approve TimeBank time Q Quit - 34 - Socrates BBS (v1.10) The System Operator's Role The majority of the commands are straightforward and need no explanation. The commands that may require some clarification are the Deleting commands. The main thing to remember is that when a record is killed, either using the "Kill" or the "Criteria Deletion" command, the record is only marked for deletion and not actually removed. Because of this, you have the option of changing your mind and retrieving the record by using the "Unkill" command. The criteria for the "Criteria Deletion" command is defined in the initialization file using the USERDELETE setting. Once your mind is made up and you want to remove the marked records from the database, you will use the "Purge" command. This will perform the actual record removal and deletion. User list deletion can also be done using the KILLCRIT.EXE program. This also takes its criteria from the setting in the initialization file but does immediate deletion rather than marking the entries and having to purge manually. 5.3 Message Area Maintenance The program SOC-MSG.EXE is included in the SOCRATES package and is used to maintain the message areas. Obviously, you don't want to let the messages just continue to pile up endlessly, so they will need to be trimmed down occasionally (unless you have a LOT more drive space than the rest of us). To use the program, simply enter the following: SOC-MSG <control-file> - 35 - Socrates BBS (v1.10) The System Operator's Role The control file is a straight text file containing the commands for maintaining the message areas. There are 3 commands which are used to identify which areas are to be maintained and how the maintenance should be done. The commands are: Area # Select a message area as active. All operations will be performed on this area until another AREA command is executed or until the end of file is reached. Delete m n Messages are deleted in such a way that the first "m" messages are ignored, then the following messages are deleted until there are "m+n" messages remaining. (one often may want to keep the first few messages to retain echomail high- water-marks or message area rules.) Renum Messages are renumbered so that their numbers are contiguous, and the users' message read information is updated. An example of a SOC-MSG control file is as follows: ; ; Sample SOC-MSG.CTL Control File ; Area 1 Delete 1 49 Renum ; Area 84 Delete 0 200 Renum ; ; End of File ; It should also be noted that the SOC-MSG program will update the message read pointers. These pointers are stored in the user file for Fido type areas and in files in each message directory for Socrates type areas. The files are named LMRxxxx.SOC, where the xxxx is a four character hexadecimal number keyed to a user through the USERSx.SOC files. There is one LMRxxxx.SOC file for each user that accesses the message area and these files should not be deleted. - 36 - Socrates BBS (v1.10) The System Operator's Role 5.4 Socrates Type Message Linking The final utility program included in the SOCRATES package is a program called SOC-SCAN.EXE. This program is used to prepare a SOCRATES Type message area for reading by creating all of the subject and link information files. If all messages entered the system through the BBS, then the Socrates Message area files would maintain themselves after being initialized. Fortunately or not, the truth is that most of us are also using echomail. This mail comes from an external source which is completely unaware of the Socrates environment. So how does SOCRATES know how these message fit into the scheme of things? It won't unless you run SOC-SCAN. After importing messages from an external source, SOC-SCAN should be executed. It will go through all SOCRATES message areas and either append new information onto the old subject and link files, or completely re-scan the area if necessary. SOC-SCAN should also be executed after making any kind of modifications to a message area. Specifically, after a SOCRATES message area is processed with SOC-MSG, you must run SOC-SCAN. NOTE: Whenever you start a new Socrates message area or convert a Fido-type to a Socrates-type, you must run SOC-SCAN to initialize the Subject and Link files. If the command line switch /R is used, SOC-SCAN will re-scan everything in the message areas. - 37 - Socrates BBS (v1.10) APPENDIX 1 - Use of Delimiters APPENDIX 1 - Use of Delimiters Some areas of this manual refer to "delimited strings" and it may not be clear to everyone just what is meant by that. Delimited strings are nothing more than strings of characters that are surrounded by delimiters, or characters which indicate the beginning and end of the string. Delimiters within SOCRATES can be any non-space character. The delimited string then begins with any character, and all characters between this first character and the next occurrence of that same character comprise the text of the string. Most commonly used delimiters are the double quotes ("), such as: "this is the string enclosed in double quotes." This can pose a problem if the string that you want contains a double quote within it. In the case of the string entry: "Demonstrates the problem with using "double" quotes." The actual string used would be: Demonstrates the problem with using and the remainder of the line would be ignored as garbage. However, if the delimiter used were a single quote, the delimited string would look like: 'This demonstrates how "double quotes" can be used.' and the string used by the program would look like: This demonstrates how "double quotes" can be used. Remember, the use of different delimiters can overcome a number of problems that may otherwise occur if only a single delimiter is allowed. Here are some further examples of valid delimited strings: 'this is the text inside a single quote' "inside double quotes" "the hamster said, 'No thank you, sir.'" -the delimiter can be anything- Heven letters and stuffH %completely arbitrary% /got it?/ Note that the asterisk is used as a delimiter to indicate a "special code" in the SOCRATES program file and should not be used as a regular string delimiter. - 38 - Socrates BBS (v1.10) APPENDIX 2 - Evaluating Conditions APPENDIX 2 - Evaluating Conditions Conditions are constants, variables or formulae that evaluate to either a logical true or false state. These can then be applied to some of the lines in the initialization file and most of the lines in the program file to alter the way the SOCRATES engine deals with these command lines. Logical constants are defined as follows: F False T True Logical variables used by SOCRATES are: S<number> Returns the True or False status of the specified signal. Z<number> Returns the True or False status of the specified state. L True if SOCRATES is running in "local" mode. MR True if the user has enabled "More". SOC True if the current message area is a Socrates type area. SBT True if the user has exceeded their download session byte threshold. This is the maximum number of bytes that a user may download in a single session. DBT True if the user has exceeded their download daily byte threshold. This is the maximum number of bytes that a user may download in a single day. TBT True if the user has exceeded their download all-time total byte threshold. This is the maximum number of bytes that a user may download from the BBS. SFT True if the user has exceeded their download session file threshold. This is the maximum number of files that a user may download in a single session. DFT True if the user has exceeded their download daily file threshold. This is the maximum number of files that a user may download in a single day. - 39 - Socrates BBS (v1.10) APPENDIX 2 - Evaluating Conditions TFT True if the user has exceeded their download all-time total file threshold. This is the maximum number of files that a user may download from the BBS. SBR True if the user's current session ratio of downloaded / uploaded bytes exceeds the limit set in the initialization file. DBR True if the user's current daily ratio of downloaded / uploaded bytes exceeds the limit set in the initialization file. TBR True if the user's current all-time total ratio of session downloaded / uploaded bytes exceeds the limit set in the initialization file. SFR True if the user's current session ratio of downloaded / uploaded files exceeds the limit set in the initialization file. DFR True if the user's current daily ratio of downloaded / uploaded files exceeds the limit set in the initialization file. TFR True if the user's current all-time total ratio of session downloaded / uploaded files exceeds the limit set in the initialization file. TCT True if the user's current times called exceeds the limit set in the initialization file. SCT True if the user's current time since last call exceeds the limit set in the initialization file. - 40 - Socrates BBS (v1.10) APPENDIX 2 - Evaluating Conditions Other variables that return a numerical value which can be used in a comparison are: A Current message area. FA Current file area. D Current day of the week (0=Sun, 1=Mon, et cetera) H Current help level. M Minutes portion of the current time of day. HR Hours portion of the current time of day (in 24 hour clock format). P Current user's privilege level. W Current user's screen width. LN Current user's screen length. TM Current user's terminal type. At present only types 0 (dumb terminal) and 1 (ANSI terminal) have been defined. Other types can be added as required. Operators which are used for evaluating conditional expressions are as follows: & Logical AND + Logical OR - or ~ Logical NOT < "less than" comparitor > "greater than" comparitor <= or =< "less than or equal to" comparitor >= or => "greater than or equal to" comparitor = "equal to" comparitor # "does not equal" comparitor () Parentheses are used to set precedence for evaluating expressions - 41 - Socrates BBS (v1.10) APPENDIX 2 - Evaluating Conditions Here are some examples of valid conditions: a=2 True for message area number 2. SBT & p<20 True if session byte download limit has been exceeded and the user's privilege is less than 20. a<3 + p=255 Message area number is less than 3 or the user's privilege is equal to 255. - p=255 User's privilege is not equal to 255 p#255 User's privilege is not equal to 255 - 42 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings APPENDIX 3 - Initialization File Settings Following are the settings available for use in the initialization file. The settings are listed in alphabetical order and give a description of the setting, show the default values, proper syntax and an example line. ----------------------------------------------------------- ACTIVETIMEBANKUPLOADREFUND <number> Multiplier to apply to the time spent uploading which is then refunded to the user's active timebank. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: 0 to 65535 Example: ACTIVETIMEBANKUPLOADREFUND 60 ----------------------------------------------------------- ALIAS <number> <condition> Setting to determine whether an alias (from a user data field) is used as the name in a message FROM: field when a user enters or replies to a message using the ENTER, RESPOND, START or ADD commands. This setting identifies which user data field is used as well as the conditions for the use. There can be any number of ALIAS settings in the initialization file. The one that applies is the last one that evaluates to TRUE. Default: none Valid inputs: (1) number of user data field to use (2) any condition Example: ALIAS 3 (a=2 + a>7) & p=>15 ----------------------------------------------------------- - 43 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings ALLOWQUOTING <condition> Setting to determine whether message quoting is supported when replying to a message. Default: T Valid inputs: any condition Example: ALLOWQUOTING (a=2 + a>7) & p=>15 ----------------------------------------------------------- ANONYMOUS <condition> Setting to determine whether an anonymous name is used when entering messages. Default: F Valid inputs: any condition Example: ANONYMOUS (a=2 + a>7) & p=>15 ----------------------------------------------------------- ANONYMOUSNAME <string> Anonymous name to use when entering messages if the ANONYMOUS option is set to TRUE. Default: 'Anonymous' Valid inputs: delimited string Example: ANONYMOUSNAME "Joe Average User" ----------------------------------------------------------- - 44 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings APPENDORIGIN <condition> Setting to determine whether a FidoNet EchoMail type "Origin:" line is appended to messages entered. Default: F Valid inputs: any condition Example: APPENDORIGIN (a>3 & a<=6) + a=14 ----------------------------------------------------------- BAUD <number> The baud rate that your modem will be initialized at. Default: 2400 Valid inputs: powers of 2 x 300 (ie. 300, 600, 1200, etc.) Example: BAUD 9600 ----------------------------------------------------------- CLEARBEFOREMESSAGE Setting to determine whether the user's screen is cleared before displaying a message. This entry takes no argument and is disabled unless the entry appears in the initialization file. Default: F Valid inputs: n/a Example: CLEARBEFOREMESSAGE ----------------------------------------------------------- - 45 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings CUTATSEENBY Setting to determine whether SEEN-BY lines (from FidoNet EchoMail) are displayed. This entry takes no argument and is disabled unless the entry appears in the initialization file. Default: F Valid inputs: n/a Example: CUTATSEENBY ----------------------------------------------------------- DAILYBYTESRATIO <number> Ratio of daily downloaded / uploaded bytes that users should not exceed. Default: 1024 Valid inputs: positive integer Example: DAILYBYTESRATIO 15 ----------------------------------------------------------- DAILYBYTESTHRESHOLD <number> Default daily limit of bytes downloaded which may be modified by multipliers. Default: 524288 Valid inputs: positive integer Example: DAILYBYTESTHRESHOLD 2000000 ----------------------------------------------------------- - 46 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings DAILYFILESRATIO <number> Default daily ratio of downloaded / uploaded files that users should not exceed. Default: 1024 Valid inputs: positive integer Example: DAILYFILESRATIO 10 ----------------------------------------------------------- DAILYFILESTHRESHOLD <number> Default daily limit of files downloaded which may be modified by multipliers. Default: 32 Valid inputs: positive integer Example: DAILYFILESTHRESHOLD 20 ----------------------------------------------------------- DAILYTIMEBANKROLLOVER Setting to determine whether the user's time in the pending timebank is rolled over into the active timebank at the end of the day. This entry takes no argument and is disabled unless the entry appears in the initialization file. Default: F Valid inputs: n/a Example: DAILYTIMEBANKROLLOVER ----------------------------------------------------------- - 47 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings DAILYTIMELIMIT <number> Default daily time limit in minutes. This may be modified by multipliers. Default: 240 Valid inputs: 0 to 65535 Example: DAILYTIMELIMIT 90 ----------------------------------------------------------- DEFAULTCRASHON Setting to determine whether the "crash" bit is set for NetMail messages. Default: F Valid inputs: n/a Example: DEFAULTCRASHON ;crash bit set on all NetMail ----------------------------------------------------------- DEFAULTFILEATTACHON Setting to determine whether the "file attach" bit is set for NetMail messages. Default: F Valid inputs: n/a Example: DEFAULTFILEATTACHON ;f/a bit set on all NetMail ----------------------------------------------------------- - 48 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings DEFAULTKILLSENTON Setting to determine whether the "kill/sent" bit is set for NetMail messages. Default: F Valid inputs: n/a Example: DEFAULTKILLSENTON ;kill/sent bit set on all NetMail ----------------------------------------------------------- DEFAULTSINCELASTCALLEDTHRESHOLD <number> Default number of days since last called limit. This may be modified by multipliers. Default: 90 Valid inputs: 0 to 65535 Example: DEFAULTSINCELASTCALLEDTHRESHOLD 30 ----------------------------------------------------------- EDITOUTSIDEFILE <string> The filename used for the EDITOUTSIDE command. Default: 'message.txt' Valid inputs: delimited string (filename) Example: EDITOUTSIDEFILE "editfile.tmp" ----------------------------------------------------------- - 49 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings DEFAULTTIMESCALLEDTHRESHOLD <number> Default number of times called limit. This may be modified by multipliers. Default: 2 Valid inputs: 0 to 65535 Example: DEFAULTTIMESCALLEDTHRESHOLD 5 ----------------------------------------------------------- ENDCHATMSG <string> String sent to the user when leaving chat mode. Default: "--------- End Chat with Sysop ----------" Valid inputs: delimited string less than 128 characters Example: ENDCHATMSG "Done chatting. Returning you to SOCRATES." ----------------------------------------------------------- EXCEEDEDDAILYTLIMCOMM <commandlistlabel> Command list executed when a user has exceeded their daily time limit. Default: DAILYTIMEOUT Valid inputs: any command list label Example: EXCEEDEDDAILYTLIMCOMM overtime ----------------------------------------------------------- - 50 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings FIDONET <condition> Setting to determine whether FidoNet address information should be included when entering a message. See APPENDIX 7 for more information on the FidoNet electronic mail network. Default: F Valid inputs: any condition Example: FIDONET a=6 ----------------------------------------------------------- FILESLISTFILE <string> File used for listing the files in a download area. Default: "FILES.BBS" Valid inputs: any delimited valid file name Example: FILESLISTFILE "filelist.txt" ----------------------------------------------------------- FILESMULT <number> [<condition>] Multiplier to apply to the default download file and byte limits. There can be more than one FILESMULT entry with different conditions attached. These are evaluated in order and the last one that applies is the multiplier that is used. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: (1) positive integer (2) any condition Example: FILESMULT 80 ----------------------------------------------------------- - 51 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings FIRSTMENU <menulabel> First menu presented to a caller after a "normal" log on. Default: MAIN Valid inputs: any menu label Example: FIRSTMENU top ----------------------------------------------------------- FORCEPRIVATE <condition> Setting to determine whether all messages entered by the users are marked as "private". Default: F Valid inputs: any condition Example: FORCEPRIVATE a=18 & p<199 ----------------------------------------------------------- FORGOTPASSWORDCOMM <commandlistlabel> Command list executed after a caller has failed the specified number of times to enter the correct password and before they are presented with a menu. Default: FORGOT_PASSWORD Valid inputs: any command list label Example: FORGOTPASSWORDCOMM areyouahacker ----------------------------------------------------------- - 52 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings FORGOTPASSWORDMENU <commandlistlabel> The menu presented to a caller after they have failed the specified number of times to enter the correct password. Default: FORGOT_PASSWORD Valid inputs: any command list label Example: FORGOTPASSWORDMENU cantrememberit ----------------------------------------------------------- HOTKEYS Setting to determine whether "hot key" menus are to be used. This means that the user will not have to press ENTER in order for a command to be executed. As soon as a command key is entered, Socrates will quit displaying the current menu and execute the command. Default: none Valid inputs: n/a Example: HOTKEYS ----------------------------------------------------------- INACTIVITYTIMELIMIT <number> Number of minutes of inactivity before a user gets logged off. Default: 5 Valid inputs: 0 to 65535 Example: INACTIVITYTIMELIMIT 2 ----------------------------------------------------------- - 53 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings INTROCOMM <commandlistlabel> Command list executed after a successful log on. Default: INTRO Valid inputs: any command list label Example: INTROCOMM hitherebuddy ----------------------------------------------------------- LOGFILE <string> Name of the file used to store the user activity log. Default: "SOCRATES.LOG" Valid inputs: any delimited valid file name Example: LOGFILE "c:\socrates\logfiles\my-bbs.log" ----------------------------------------------------------- LOGONTIME <number> Number of minutes a caller has to successfully log on. Default: 4 Valid inputs: 0 to 65535 Example: LOGONTIME 22 ;For the really slow typists! ----------------------------------------------------------- - 54 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings MODEMHANGUP <string> String sent to the modem to hang up after a caller has disconnected. Default: "~~+++~~ATH|" Valid inputs: delimited string less than 128 characters Example: MODEMHANGUP "|~~ATH0|~~" Note that the following character translation is done: | becomes a chr(13) [ENTER] ^ translates the NEXT character into a control character (^A sends a Control-A) ~ pauses for one second ' pauses for one tenth of a second ----------------------------------------------------------- MODEMINIT <string> Initialization string sent to the modem when it is being reset. Default: "|ATZ|~~ATE0M0V1X4S0=1|" Valid inputs: delimited string less than 128 characters Example: MODEMINIT "ATE1H0M0V1X7&M4&K1&B1&S1&H3S15=89S0=0~|" Note that the following character translation is done: | becomes a chr(13) [ENTER] ^ translates the NEXT character into a control character (^A sends a Control-A) ~ pauses for one second ' pauses for one tenth of a second ----------------------------------------------------------- - 55 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings MOREPROMPT <string> String sent to the caller when their screen is full. Default: "More? Valid inputs: delimited string less than 128 characters Example: MOREPROMPT "Any key to continue..." ----------------------------------------------------------- NAMEPROMPT <string> String sent to the caller asking for their name. Default: "Your Full Name:" Valid inputs: delimited string less than 128 characters Example: NAMEPROMPT "Y'all better gimme yer real name now!" ----------------------------------------------------------- NET <number> The FidoNet Net that your system is in. See APPENDIX 7 for more information on the FidoNet electronic mail network. Default: -1 Valid inputs: -32768 to 32767 Example: NET 150 ----------------------------------------------------------- - 56 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings NEWUSERCOMM1 <commandlistlabel> Command list executed before a new user is asked to provide a password. Default: NEW_USER1 Valid inputs: any command list label Example: NEWUSERCOMM1 freshmeat ----------------------------------------------------------- NEWUSERCOMM2 <commandlistlabel> Command list executed after a new user is asked to provide a password and before they are presented with a menu. Default: NEW_USER2 Valid inputs: any command list label Example: NEWUSERCOMM2 cherryuser ----------------------------------------------------------- NEWUSERHELP <number> The help level that new users to the system are assigned when they log on for the first time. Default: 0 Valid inputs: 0 to 255 Example: NEWUSERHELP 5 ----------------------------------------------------------- - 57 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings NEWUSERMENU <menulabel> The first menu presented to a new user. Default: NEW_USER Valid inputs: any menu label Example: NEWUSERMENU firstevermenu ----------------------------------------------------------- NEWUSERPRIV <number> The privilege level that new users to the system are assigned when they log on for the first time. Default: 5 Valid inputs: 0 to 255 Example: NEWUSERPRIV 27 ----------------------------------------------------------- NEWUSERSCREENLENGTH <number> The screen length that new users to the system are assigned when they log on for the first time. Default: 24 Valid inputs: 0 to 65535 Example: NEWUSERSCREENLENGTH 43 ----------------------------------------------------------- - 58 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings NEWUSERSCREENWIDTH <number> The screen width that new users to the system are assigned when they log on for the first time. Default: 80 Valid inputs: 0 to 65535 Example: NEWUSERSCREENWIDTH 132 ----------------------------------------------------------- NEWUSERSIGNALS <number> [<number> <number> ...] The signals that new users to the system are assigned when they log on for the first time. Default: none Valid inputs: any list of numbers from 0 to 255 Example: NEWUSERSIGNALS 1 2 199 255 ----------------------------------------------------------- NODE <number> The FidoNet Node number of your system. See APPENDIX 7 for more information on the FidoNet electronic mail network. Default: -1 Valid inputs: -32768 to 32767 Example: NODE 199 ----------------------------------------------------------- - 59 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings ONLINEUPLOADREFUND <number> Multiplier to apply to the time spent uploading which is then refunded to the user's current session time limit. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: 0 to 65535 Example: ONLINEUPLOADREFUND 10 ----------------------------------------------------------- ORIGINLINE <string> String appended to messages entered when APPENDORIGIN is selected. If a file called ORIGIN (no extension) exists in the message area directory, it will be read and the text in it will be used as the origin line rather than the string specified with the ORIGINLINE setting. Default: "" Valid inputs: delimited string less than 128 characters Example: ORIGINLINE "The Best Darn BBS Around!" ----------------------------------------------------------- PASSWORDATTEMPTS <number> Number of tries that caller has to enter the correct password before the program goes into a "forgotten password" mode. Default: 3 Valid inputs: 0 to 65535 Example: PASSWORDATTEMPTS 146 ;EXTREMELY patient SysOp ----------------------------------------------------------- - 60 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings PAUSEKEY <string> The first character of the delimited string is used as the user key to pause the current display. If this key is a character, both upper and lower case are accepted as input. This setting is only active if both the HOTKEYS and _______ USEPAUSEKEY settings are TRUE. Default: none Valid inputs: delimited string Example: PAUSEKEY "Pause (only 1st char is significant)" ----------------------------------------------------------- PENDINGTIMEBANKUPLOADREFUND <number> Multiplier to apply to the time spent uploading which is then refunded to the user's pending timebank. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 0 Valid inputs: 0 to 65535 Example: PENDINGTIMEBANKUPLOADREFUND 10 ----------------------------------------------------------- POINT <number> The point address of your system under a FidoNet node. See APPENDIX 7 for more information on the FidoNet electronic mail network. Default: 0 Valid inputs: 0 to 65535 Example: POINT 14 ----------------------------------------------------------- - 61 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings PORT <number> The communications port that your modem is connected to. Note that if an uninstalled comm port is specified, SOCRATES may hang or crash. Default: 1 Valid inputs: 0 to 65535 Example: PORT 2 ----------------------------------------------------------- PRIVATESYSTEM Setting to determine whether new users are allowed onto the system. This entry takes no argument and is disabled unless the entry appears in the initialization file. Default: F Valid inputs: n/a Example: PRIVATESYSTEM ----------------------------------------------------------- READPRIVATE <condition> Setting to determine whether the users can read messages marked as "private". Default: F Valid inputs: any condition Example: READPRIVATE -a=18 & p>199 ----------------------------------------------------------- - 62 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings SESSIONBYTESRATIO <number> Ratio of session downloaded / uploaded bytes that users should not exceed. Default: 1024 Valid inputs: positive integer Example: SESSIONBYTESRATIO 512 ----------------------------------------------------------- SESSIONBYTESTHRESHOLD <number> Default session limit of bytes downloaded which may be modified by multipliers. Default: 131072 Valid inputs: positive integer Example: SESSIONBYTESTHRESHOLD 2000000 ----------------------------------------------------------- SESSIONFILESRATIO <number> Ratio of session downloaded / uploaded files that users should not exceed. Default: 1024 Valid inputs: positive integer Example: SESSIONFILESRATIO 100 ----------------------------------------------------------- - 63 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings SESSIONFILESTHRESHOLD <number> Default session limit of files downloaded which may be modified by multipliers. Default: 8 Valid inputs: positive integer Example: SESSIONFILESTHRESHOLD 2 ----------------------------------------------------------- SESSIONTIMELIMIT <number> Default session time limit in minutes. This may be modified by multipliers. Default: 60 Valid inputs: 0 to 65535 Example: SESSIONTIMELIMIT 90 ----------------------------------------------------------- SETCRASH <condition> Setting to determine whether the user can modify the "crash" bit for NetMail messages. The user will be allowed to change the setting when either the ENTER or START commands are executed. Default: F Valid inputs: any condition Example: SETCRASH p=255 ----------------------------------------------------------- - 64 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings SETFILEATTACH <condition> Setting to determine whether the user can modify the "file attach" bit for NetMail messages. The user will be allowed to change the setting when either the ENTER or START commands are executed. Default: F Valid inputs: any condition Example: SETFILEATTACH p=255 ----------------------------------------------------------- SETKILLSENT <condition> Setting to determine whether the user can modify the "kill/sent" bit for NetMail messages. The user will be allowed to change the setting when either the ENTER or START commands are executed. Default: F Valid inputs: any condition Example: SETKILLSENT p=255 ----------------------------------------------------------- SHOWFILEDATE Setting to determine whether the file dates are displayed to the user when listing the contents of a download area. Default: F Valid inputs: none Example: SHOWFILEDATE ----------------------------------------------------------- - 65 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings SINCELASTCALLEDMULT <number> [<condition>] Multiplier to apply to the default time since last call limits. There can be more than one SINCELASTCALLEDMULT entry with different conditions attached. These are evaluated in order and the last one that applies is the multiplier that is used. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: (1) positive integer (2) any condition Example: SINCELASTCALLEDMULT 80 p>10 ----------------------------------------------------------- SKIPMESSAGEINPUT <condition> Setting to determine whether Socrates will accept initial inputting of text. If SKIPMESSAGEINPUT evaluates to TRUE, the From, To, Subject and FidoNet fields are filled in but the initial inputting of message text is not done when an ENTER, RESPOND, START or ADD command is executed. This allows for the use of an external editor for message entry. Default: F Valid inputs: any condition Example: SKIPMESSAGEINPUT p>5 & s16 & tm=1 ----------------------------------------------------------- STARTCHATMSG <string> String sent to the user when entering chat mode. Default: "----------- Chat with Sysop ------------" Valid inputs: delimited string less than 128 characters Example: STARTCHATMSG "Hey! I wanna talk to you..." ----------------------------------------------------------- - 66 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings STOPKEY <string> The first character of the delimited string is used as the user key to stop (abort) the current display. If this key is a character, both upper and lower case are accepted as input. This setting is only active if both the HOTKEYS and _______ USESTOPKEY settings are TRUE. Default: none Valid inputs: delimited string Example: STOPKEY "Stop (only 1st char is significant)" ----------------------------------------------------------- TIMELIMIT <number> [<condition>] Multiplier to apply to the default time limits. There can be more than one TIMELIMIT entry with different conditions attached. These are evaluated in order and the last one that applies is the multiplier that is used. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: (1) positive integer (2) any condition Example: TIMELIMIT 80 ----------------------------------------------------------- - 67 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings TIMESCALLEDMULT <number> [<condition>] Multiplier to apply to the default times called limits. There can be more than one TIMESCALLEDMULT entry with different conditions attached. These are evaluated in order and the last one that applies is the multiplier that is used. Note that the number used must be divided by 20 to yield the true multiplier (ie. number 20 is actually a multiplier of 1). Default: 20 Valid inputs: (1) positive integer (2) any condition Example: TIMESCALLEDMULT 80 p>10 ----------------------------------------------------------- TOTALBYTESRATIO <number> Ratio of all-time total downloaded / uploaded bytes that users should not exceed. Default: 8 Valid inputs: positive integer Example: TOTALBYTESRATIO 10 ----------------------------------------------------------- TOTALBYTESTHRESHOLD <number> Default all-time total limit of bytes downloaded which may be modified by multipliers. Default: 1048576 Valid inputs: positive integer Example: TOTALBYTESTHRESHOLD 10000000 ----------------------------------------------------------- - 68 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings TOTALFILESRATIO <number> Ratio of all-time total downloaded / uploaded files that users should not exceed. Default: 1024 Valid inputs: positive integer Example: TOTALFILESRATIO 100 ----------------------------------------------------------- TOTALFILESTHRESHOLD <number> Default all-time total limit of files downloaded which may be modified by multipliers. Default: 64 Valid inputs: positive integer Example: TOTALFILESTHRESHOLD 1000 ----------------------------------------------------------- USEPAUSEKEY Setting to determine whether the pause key is to be re- defined for use with hot keys. This setting is only valid if the HOTKEYS setting is TRUE. The PAUSEKEY setting must be used to define the new key to be used. Default: F Valid inputs: n/a Example: USEPAUSEKEY ----------------------------------------------------------- - 69 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings USERDELETE <condition> Setting to determine the criteria used by the "Criteria Deletion" command from SOC-USER.EXE or from the KILLCRIT.EXE program. Default: F Valid inputs: any condition Example: USERDELETE SCT & p<250 & -s250 ----------------------------------------------------------- USESTOPKEY Setting to determine whether the stop key is to be re- defined for use with hot keys. This setting is only valid if the HOTKEYS setting is TRUE. The STOPKEY setting must be used to define the new key to be used. Default: F Valid inputs: n/a Example: USESTOPKEY ----------------------------------------------------------- WELCOMECOMM <commandlistlabel> Command list executed when a caller connects and before they are asked for name and password. Default: "WELCOME" Valid inputs: any command list label Example: WELCOMECOMM howdy ----------------------------------------------------------- - 70 - Socrates BBS (v1.10) APPENDIX 3 - Init File Settings WRITEPRIVATE <condition> Setting to determine whether the users can enter messages marked as "private". Default: F Valid inputs: any condition Example: WRITEPRIVATE (a<18 + a>18) & p>15 ----------------------------------------------------------- ZONE <number> The FidoNet Zone that your system is in. See APPENDIX 7 for more information on the FidoNet electronic mail network. Default: 0 Valid inputs: 0 to 65535 Example: ZONE 1 ----------------------------------------------------------- - 71 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands APPENDIX 4 - BBS Program Commands Following are the commands, responses and special codes available for use in the program file. These are listed in alphabetical order and give a description of the command, proper usage and an example line. ----------------------------------------------------------- *!* Module: Response Description: A special code which will accept any text input and use the input as User Input. If the user data is input to a COMMLIST() then the user data is available for use by the first command in the COMMLIST. This does not cancel any pending hotkey input. Parameters: none Failure State: n/a Example: menu userlist ''/ 'Pattern to match (* = All): ' resp userlist '' null main *!* userlist main ----------------------------------------------------------- - 72 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *#* Module: Response Description: A special code which will accept a numeric input and use the input as User Input. If the user data is input to a COMMLIST() then the user data is available for use by the first command in the COMMLIST. Parameters: none Failure State: n/a Example: menu CHGWIDTH ''/ 'New Width: ' resp CHGWIDTH '' null change *#* CHGWIDTH change ----------------------------------------------------------- *@* Module: Response Description: A special code which will accept any text input and use the input as User Input. If the user data is input to a COMMLIST() then the user data is available for use by the first command in the COMMLIST. Parameters: none Failure State: n/a Example: menu userlist ''/ 'Pattern to match (* = All): ' resp userlist '' null main *@* userlist main ----------------------------------------------------------- - 73 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *%* Module: Response Description: A special code which will accept a numeric input and use the input as User Input. If the user data is input to a COMMLIST() then the user data is available for use by the first command in the COMMLIST. This does not cancel any pending hotkey input. Parameters: none Failure State: n/a Example: menu CHGWIDTH ''/ 'New Width: ' resp CHGWIDTH '' null change *%* CHGWIDTH change ----------------------------------------------------------- ABORT Module: Response or Command Description: A generic message area command that will abort the current message area without saving the last message read pointer. Parameters: none Failure State: none Example: RESP fido 'ABORT' [c] abort no_area ----------------------------------------------------------- - 74 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands ADD Module: Response or Command Description: A Socrates message area command that will add a reply to the current subject. Parameters: none Failure State: Empty TO: field in message Example: COMM do_add stateoff(3) add ----------------------------------------------------------- AHEAD Module: Response or Command Description: A Socrates message area command that will advance the specified number of replies to the current subject. Parameters: number of replies to advance (user input) Failure State: none Example: resp msg_soc '' new 'N' [o,c] new 'M' [o,c] main '0' stay *#* ahead ----------------------------------------------------------- - 75 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands AHEAD1 Module: Response or Command Description: A Socrates message area command that will advance one reply to the current subject. Parameters: none Failure State: none Example: resp msg_soc '' new 'N' [o,c] ahead1 'M' [o,c] main ----------------------------------------------------------- AREA (<messageareanumber>) Module: Response or Command Description: A generic message area command that will change to the specified message area. Parameters: message area number Failure State: (1) AREAS.SOC not found (2) area number not defined (3) area is Socrates type with subject and link files missing. Example: resp areas '1' commlist(area1) fido '2' area( 2) msg_soc '' null no_area ----------------------------------------------------------- - 76 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands ASSIGNFILE (filename) Module: Response or Command Description: A command that will specify a file for text output. Output can be directed to this file using the STARTFILEOUTPUT command. The STOPFILEOUTPUT command is used to stop output to this file. If the file exists, output will be appended to the existing file. Socrates will remember the name of the the output file assigned until another ASSIGNFILE or USERASSIGNFILE command is executed. Parameters: output file name Failure State: cannot access or create file Example: comm userinfo assignfile (DOORFILE.TXT) startfileoutput showname stopfileoutput ----------------------------------------------------------- BACK Module: Response or Command Description: A Socrates message area command that will back up the specified number of subjects. Parameters: number of subjects to back up (user input) Failure State: none Example: menu backsub *skip* 'Back how many? ' resp backsub *#* back msg_soc '' null msg_soc ----------------------------------------------------------- - 77 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands BACK1 Module: Response or Command Description: A Socrates message area command that will back up one subject. Parameters: none Failure State: none Example: resp msg_soc '' new 'P' [o,c] back1 'M' [o,c] main ----------------------------------------------------------- CHGDATA (number) Module: Response or Command Description: A Change command that will input and change the specified user's data field. There are 256 user data field, numbered from 0 to 255. Parameters: number of field to change Failure State: blank input Example: resp change 'D' [o,c] CHGDATA (16) ----------------------------------------------------------- - 78 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands CHGHELP Module: Response or Command Description: A Change command that will input and change the user's help level to the specified value. Parameters: help level number (user input) Failure State: number out of byte range (0-255) Example: menu CHGHELP ''/ '0) Novice - Full Help'/ '1) Experienced - Some Help'/ '2) Expert - No Help'/ 'New Help Level: ' resp CHGHELP '' null change *#* CHGHELP change ----------------------------------------------------------- CHGLENGTH Module: Response or Command Description: A Change command that will change the user's screen length to the specified value. Parameters: new screen length (user input) Failure State: number out of byte range (0-255) Example: menu CHGLENGTH ''/ 'New Length: ' resp CHGLENGTH '' null change *#* CHGLENGTH change ----------------------------------------------------------- - 79 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands CHGMORE Module: Response or Command Description: A Change command that will toggle the user's MORE? setting. Parameters: none Failure State: none Example: resp change 'M' [o,c] CHGMORE ----------------------------------------------------------- CHGNAME Module: Response or Command Description: A Change command that will input and change the user's name. Parameters: none Failure State: blank input Example: resp change 'N' [o,c] CHGNAME ----------------------------------------------------------- - 80 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands CHGPSWD Module: Response or Command Description: A Change command that will input and change the user's password. Parameters: none Failure State: blank input Example: resp change 'P' [o,c] CHGPSWD ----------------------------------------------------------- CHGTERM Module: Response or Command Description: A Change command that will change the user's terminal emulation type to the specified value. Note that the only difference between terminal types as far as Socrates is concerned is that terminal type 0 uses a Ctrl-L to clear the screen while type 1 uses <esc>[2J (the ANSI code to clear the screen). Any other changes, such as ANSI codes in menus, are up to the SysOp and can be selected using the TM= condition. Parameters: new terminal type (user input) Failure State: number out of byte range (0-255) Example: menu CHGTERM ''/ ' 0) Dumb Terminal'/ ' 1) ANSI'/ 'New Terminal: ' resp CHGTERM '' null change *#* CHGTERM change ----------------------------------------------------------- - 81 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands CHGWIDTH Module: Response or Command Description: A Change command that will change the user's screen width to the specified value. Parameters: new screen width (user input) Failure State: number out of byte range (0-255) Example: menu CHGWIDTH ''/ 'New Width: ' resp CHGWIDTH '' null change *#* CHGWIDTH change ----------------------------------------------------------- *CLEAR* Module: Menu Description: A special code which will clear the user's screen by sending the appropriate screen clear code as defined by the user's terminal type. Parameters: none Failure State: n/a Example: menu information *skip* *clear* '---- Information ----'/ 'N)ew Uploads'/ 'G)etting around the BBS'/ 'S)ocrates Message Area Information'/ 'Q)uit to Main Menu'/ ----------------------------------------------------------- - 82 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands COMM <commandmodulelabel> Module: Command Description: Identifies the start of a command module. Parameters: command module label Failure State: n/a Example: COMM fido_next stateon(1) stateon(2) next ----------------------------------------------------------- COMMLIST (<commandlistlabel>) Module: Response or Command Description: Execute a command list identified with a COMM statement. Parameters: command list label Failure State: (1) command list not defined (2) *FAILBREAK* exit from command list Example: menu quest 'Answer the questionnaire now?'/ '(1) Yes (2) Whoops, wrong key. : ' resp quest '1' commlist(quest) main '2' null main ----------------------------------------------------------- - 83 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands CONTINUOUS Module: Response or Command Description: A command to input text from the user and write it, complete with word wrapping, until a blank line is entered. The text will be written to a specified file if output has been redirected using the STARTFILEOUTPUT command. Parameters: none Failure State: none Example: comm writecolors assignfile(peeve.log) startfileoutput writeln(What is your pet peeve and why?) continuous stopfileoutput ----------------------------------------------------------- DOWNLOAD Module: Response or Command Description: Shell to a specified external file transfer protocol passing user input. Parameters: External file transfer protocol command line complete with parameters passed as user input. Failure State: (1) file not found (2) unable to execute shell Example: menu dl_zmodem 'Files: ' resp dl_zmodem '' null files *@* download(c:\programs\dsz.com port %a speed %b sz %d\%1) ----------------------------------------------------------- - 84 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITABORT Module: Response or Command Description: A message edit command that will abort entry of the current message. Parameters: none Failure State: none Example: menu enter_abort 'Are you sure? ' resp enter_abort 'Y' [o,c] editabort fido -a=2 'Y' [o,c] editabort msg_soc *@* null msg_enter ----------------------------------------------------------- EDITATTACH Module: Response or Command Description: A FidoNet message edit command that will toggle the FileAttach bit in the current message header. Parameters: none Failure State: none Example: resp edit_attach 'A' [o,c] editattach fido a=6 ----------------------------------------------------------- - 85 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITCHGSUBJ Module: Response or Command Description: A message edit command that will input and change the SUBJECT: field of the current message. This command will not work when used in conjunction with the RESPOND or ADD commands. Parameters: none Failure State: none Example: resp msg_enter 'J' [o,c] editchgsubj msg_enter z4 ----------------------------------------------------------- EDITCHGTO Module: Response or Command Description: A message edit command that will input and change the TO: field of the current message. Parameters: none Failure State: blank entry Example: resp msg_enter 'T' [o,c] editchgto msg_enter z4 ----------------------------------------------------------- - 86 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITCONT Module: Response or Command Description: A message edit command that will allow you to continue to add to the end of the current message. Parameters: none Failure State: none Example: resp msg_enter 'C' [o,c] editcont ----------------------------------------------------------- EDITCRASH Module: Response or Command Description: A FidoNet message edit command that will toggle the Crash bit in the current message header. Parameters: none Failure State: none Example: resp edit_crash 'C' [o,c] editcrash fido a=6 ----------------------------------------------------------- - 87 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITDELETEFROM Module: Response or Command Description: A message edit command that will mark the first line of a range of lines for deletion in the current message. No deletion is done until the EDITDELETETO command is executed. Parameters: number of first line to delete (user input) Failure State: (1) line out of range (2) blank line number entered Example: menu delete1 'Delete from line: ' resp delete1 '' null msg_enter *#* editdeletefrom delete2 ----------------------------------------------------------- EDITDELETETO Module: Response or Command Description: A message edit command that will mark the last line of a range of lines for deletion in the current message and delete the line range. Parameters: number of last line to delete (user input) Failure State: (1) end line before start line (2) blank line number entered Example: menu delete2 'Delete to line: ' resp delete2 '' null msg_enter *#* editdeleteto msg_enter ----------------------------------------------------------- - 88 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITEDIT Module: Response or Command Description: A message edit command that will allow you to edit a specified line in the current message. Parameters: number of line to edit (user input) Failure State: line number out of range Example: menu editedit 'Edit line: ' resp editedit '' null msg_enter *#* editedit msg_enter ----------------------------------------------------------- EDITFIDONET Module: Response or Command Description: A FidoNet message edit command that will allow you to edit the FidoNet destination address in the current message header. Parameters: none Failure State: none Example: resp edit_fidonet 'D' [o,c] editfidonet fido a=6 ----------------------------------------------------------- - 89 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITINSERT Module: Response or Command Description: A message edit command that will allow you to insert after a specified line in the current message. Parameters: none Failure State: none Example: menu insert 'Insert after line: ' resp insert '' null msg_enter *#* editinsert msg_enter ----------------------------------------------------------- EDITKILLSENT Module: Response or Command Description: A FidoNet message edit command that will toggle the KillSent bit in the current message header. Parameters: none Failure State: none Example: resp edit_killsent 'K' [o,c] editkillsent fido a=6 ----------------------------------------------------------- - 90 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITLIST Module: Response or Command Description: A message edit command that will list the lines entered so far for the current message. Parameters: none Failure State: none Example: resp msg_enter 'L' [o,c] editlist ----------------------------------------------------------- EDITOUTSIDE Module: Response or Command Description: A message edit command that will create a file whose name is defined in the initialization file setting EDITOUTSIDEFILE. This file will contain the text entered so far for the current message. The system then shells to the editor specified on the command line. When the editor is exited, Socrates will convert the file back to message format for further editing and delete the working file. Parameters: text editor to shell to Failure State: shell returned errorlevel other than zero Example: resp msg_enter 'O' [o,c] editoutside(c:\programs\edit.com message.txt) L ----------------------------------------------------------- - 91 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands EDITPRIVATE Module: Response or Command Description: A message edit command that will toggle the Private flag in the header of the current message being written. Parameters: none Failure State: none Example: resp enter_private 'P' [o,c] editprivate fido -a=2 ----------------------------------------------------------- EDITSAVE Module: Response or Command Description: A message edit command that will save the current message. Parameters: none Failure State: none Example: resp enter_msg 'S' [o,c] editsave message ----------------------------------------------------------- - 92 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands ENTER [(to_name)] Module: Response or Command Description: A Fido message area command that will allow you to start a new message. If the optional (to_name) follows the command, it will be used for the TO: field. Parameters: TO: field entry (optional) Failure State: (1) empty TO: field (2) empty SUBJECT: field Example: resp enter_msg 'E' [o,c] enter message or comm logoff_message stateon(3) stateoff(4) enter(SysOp) ----------------------------------------------------------- EXIT (<errorlevel>) Module: Response or Command Description: This command will halt the SOCRATES program with the specified errorlevel. Socrates will create an EXITUSER.SOC file containing the user's name, baud rate and time remaining. This will allow input to other programs or for relogging back into Socrates. Parameters: errorlevel to exit with Failure State: none Example: 'O' [o,c] exit(255) ----------------------------------------------------------- - 93 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *FAILBREAK* Module: Command Description: A special code which will end the execution of the command file if the previously executed command line failed. The calling COMMLIST command will be returned as failed. Parameters: n/a Failure State: n/a Example: comm enterfido enter *FAILBREAK* writeln(Remember, NetMail costs...) a=2 ----------------------------------------------------------- *FAILSUCCESS* Module: Command Description: A special code which will end the execution of the command file if the previously executed command line failed. The calling COMMLIST command will be returned as successfully completed. Parameters: n/a Failure State: n/a Example: comm new_user2 file(newuser.txt) *FAILSUCCESS* file(newuser2.txt) ----------------------------------------------------------- - 94 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands FILE (<filename>) Module: Response or Command Description: This command will display the specified file to the user. Parameters: name of file to display Failure State: file not found Example: 'B' [o,c] file(bulletin.txt) mainmenu p>15 ----------------------------------------------------------- FILEAREA (<fileareanumber>) Module: Response or Command Description: This command will change to the specified file area and make it the active area. Parameters: number of file area to make active Failure State: (1) FILES.SOC file not found (2) file area not defined Example: resp fareas '1' filearea(1) files '2' filearea(2) files '' null no_farea ----------------------------------------------------------- - 95 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands FILELIST (<filelistlabel>) Module: Response or Command Description: Execute a file list identified with a FLST statement. Parameters: file list label Failure State: file list not defined Example: resp bulletins 'B' [o,c] filelist(bulletin) main ----------------------------------------------------------- FLST <filemodulelabel> Module: FileList Description: Identifies the start of a filelist module. Parameters: filelist module label Failure State: n/a Example: flst bulletin bulletin.001 p<10 & TM=0 bulletin.A01 p<10 & TM>0 bulletin.002 p>9 & TM=0 bulletin.A02 p>9 & TM>0 ----------------------------------------------------------- - 96 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *FORCE* Module: Menu Description: A special code which will force the following lines of the menu to be displayed to the user, even after a *SKIP* code has been executed. Parameters: none Failure State: n/a Example: menu information *skip* *clear* '---- Information ----'/ 'N)ew Uploads'/ 'G)etting around the BBS'/ 'S)ocrates Message Area Information'/ 'Q)uit to Main Menu'/ *force* ''/ 'Command:' ----------------------------------------------------------- FORCEDONTMORE Module: Response or Command Description: A command that will turn off the "More?" prompt, regardless of the user's setting. Parameters: none Failure State: none Example: comm show_ansifile forcedontmore file(picture.ans) morenow restoremore ----------------------------------------------------------- - 97 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands FORCEMORE Module: Response or Command Description: A command that will turn on the "More?" prompt, regardless of the user's setting. Parameters: none Failure State: none Example: comm show_longfile forcemore file(longfile.txt) restoremore ----------------------------------------------------------- FORWARD Module: Response or Command Description: A Socrates message area command that will advance the specified number of subjects. Parameters: number of subjects to advance (user input) Failure State: none Example: menu forwardsub *skip* 'Forward how many? ' resp forwardsub *#* forward msg_soc '' null msg_soc ----------------------------------------------------------- - 98 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands FORWARD1 Module: Response or Command Description: A Socrates message area command that will advance one subject. Parameters: none Failure State: none Example: forward1 msg_soc ----------------------------------------------------------- GOSUBJ Module: Response or Command Description: A Socrates message area command that will advance to the specified subject number. Parameters: number of subject to advance to (user input) Failure State: none Example: menu gosubj *skip* 'Subject: ' resp gosubj *#* gosubj msg_soc '' null msg_soc ----------------------------------------------------------- - 99 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands HEADERS Module: Response or Command Description: A Fido message area command that will display message header information (To, From and Subject) for all messages in the current message area that the user is allowed to see. Parameters: none Failure State: none Example: 'H' [o,c] headers ----------------------------------------------------------- *HIGHEST* Module: Menu Description: A special code which will output the highest message number in the current message area. This is typically used in Fido type message areas. Parameters: none Failure State: n/a Example: *force* 'Messages 1-' *highest* ' [N ' z1 & z2 ' [P ' z1 & -z2 ' [+ ' -z1 & z2 ' [- ' -z1 & -z2 *MSGNUM* ']'/ 'Message Command: ' ----------------------------------------------------------- - 100 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands INFO Module: Response or Command Description: Displays the current user's time remaining as well as download and upload totals. Parameters: none Failure State: none Example: 'S' [o,c] info main ----------------------------------------------------------- KILL Module: Response or Command Description: A message area command that will kill (delete) the current message. Parameters: none Failure State: message not found Example: 'K' [o,c] kill fido p=255 ----------------------------------------------------------- - 101 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands LASTTIMECALLED Module: Response or Command Description: A command to display to the user the last time they called. This command does not send a CRLF after the string. Parameters: none Failure State: none Example: comm info write(You last called on ) lasttimecalled writeln() ----------------------------------------------------------- LINE Module: Response or Command Description: A command to input a line from the user and write it. The line will be written to a specified file if output has been redirected using the STARTFILEOUTPUT command. Parameters: none Failure State: none Example: comm writecolors assignfile(colors.log) startfileoutput writeln(What is your favorite color?) line stopfileoutput ----------------------------------------------------------- - 102 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands LINKDOWN Module: Response or Command Description: A Fido message area command that will back up to the RESPONSE-TO message (the message that the current message is a reply to). Parameters: none Failure State: current message missing Example: comm fido_linkdown stateoff(1) stateoff(2) linkdown ----------------------------------------------------------- LINKUP Module: Response or Command Description: A Fido message area command that will advance to the SEE-ALSO message (the reply to the current message). Parameters: none Failure State: current message missing Example: comm fido_linkup stateoff(1) stateon(2) linkup ----------------------------------------------------------- - 103 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands LISTFILES Module: Response or Command Description: Command to list the files in the current file area's FILESLISTFILE (specified in the initialization file). Parameters: none Failure State: FILESLISTFILE not found Example: 'L' [o,c] listfiles files ----------------------------------------------------------- LOGOFF [(filelistlabel)] Module: Response or Command Description: Executes a FILELIST of the <filelistlabel> and then disconnects. Parameters: none Failure State: none Example: comm intro writeln() p=0 writeln(Beat it, loser!) p=0 writeln() p=0 logoff p=0 or logoff(exitscreens) ----------------------------------------------------------- - 104 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MAIN Module: Response or Command Description: A Socrates message area command that will skip to the next subject and then advance to the next unread message. Parameters: none Failure State: none Example: resp msg_soc 'N' [o,c] new 'M' [o,c] main '0' stay ----------------------------------------------------------- MENU <menumodulelabel> Module: Menu Description: Identifies the start of a menu module. Parameters: menu module label Failure State: n/a Example: menu quest ''/ 'Answer the questionnaire now?'/ '(1) Yes (2) Whoops, wrong key. : ' ----------------------------------------------------------- - 105 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MODATTACH Module: Response or Command Description: A FidoNet message command that will change the FileAttach bit in the current message header. Parameters: none Failure State: unable to access message Example: resp msg_mod 'A' [o,c] modattach msg_mod a=6 ----------------------------------------------------------- MODCRASH Module: Response or Command Description: A FidoNet message command that will change the Crash bit in the current message header. Parameters: none Failure State: unable to access message Example: resp msg_mod 'C' [o,c] modcrash msg_mod a=6 ----------------------------------------------------------- - 106 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MODFIDONETFROM Module: Response or Command Description: A FidoNet message command that will change the FidoNet originating address in the current message header. Parameters: none Failure State: unable to access message Example: resp mod_msg 'O' [o,c] modfidonetfrom mod_msg a=6 ----------------------------------------------------------- MODFIDONETTO Module: Response or Command Description: A FidoNet message command that will change the FidoNet destination address in the current message header. Parameters: none Failure State: unable to access message Example: resp mod_msg 'D' [o,c] modfidonetto mod_msg a=6 ----------------------------------------------------------- - 107 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MODFROM Module: Response or Command Description: A message command that will change the FROM: field in the current message. Parameters: none Failure State: unable to access message Example: resp msg_mod 'F' [o,c] modfrom msg_mod ----------------------------------------------------------- MODKILLSENT Module: Response or Command Description: A FidoNet message command that will change the KillSent bit in the current message header. Parameters: none Failure State: unable to access message Example: resp mod_msg 'K' [o,c] modkillsent mod_msg a=6 ----------------------------------------------------------- - 108 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MODPRIVATE Module: Response or Command Description: A message area command that will change the Private flag in the header of the current message being read. Parameters: none Failure State: unable to access message Example: resp message_mod 'P' [o,c] modprivate message p=255 ----------------------------------------------------------- MODSUBJECT Module: Response or Command Description: A message command that will change the SUBJECT: field of the current message. Parameters: none Failure State: unable to access message Example: resp msg_mod 'J' [o,c] modsubject msg_mod -soc ----------------------------------------------------------- - 109 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands MODTO Module: Response or Command Description: A message command that will change the TO: field of the current message. Parameters: none Failure State: unable to access message Example: resp msg_mod 'T' [o,c] modto msg_mod ----------------------------------------------------------- MORENOW Module: Response or Command Description: A command that will force a "More?" prompt, regardless of the user's setting. Parameters: none Failure State: none Example: comm show_ansifile forcedontmore file(picture.ans) morenow restoremore ----------------------------------------------------------- - 110 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *MSGNUM* Module: Menu Description: A special code which will output the current message number in the current message area. This is typically used in Fido type message areas. Parameters: none Failure State: n/a Example: *force* 'Messages 1-' *highest* ' [N ' z1 & z2 ' [P ' z1 & -z2 ' [+ ' -z1 & z2 ' [- ' -z1 & -z2 *MSGNUM* ']'/ 'Message Command: ' ----------------------------------------------------------- MSGNUM Module: Response or Command Description: A Fido message area command that will advance to the specified message. Parameters: number of message to advance to (user input) Failure State: none Example: menu go_msg *skip* 'Message Number: ' resp go_msg *#* msgnum msg_fido '' null msg_fido ----------------------------------------------------------- - 111 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands NEW Module: Response or Command Description: A Socrates message area command that will advance to the next unread message. Parameters: none Failure State: none Example: resp msg_soc 'N' [o,c] new 'M' [o,c] main '0' stay ----------------------------------------------------------- NEXT Module: Response or Command Description: A Fido message area command that will advance to the next message. Parameters: none Failure State: none Example: comm fido_next stateon(1) stateon(2) next ----------------------------------------------------------- - 112 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands NULL Module: Response or Command Description: A command that does nothing. Parameters: none Failure State: none Example: menu quest ''/ 'Answer the questionnaire now?'/ '(1) Yes (2) Whoops, wrong key. : ' resp quest '1' commlist(quest) main '2' null main ----------------------------------------------------------- NUMOFCALLERS Module: Response or Command Description: A command to display to the user the total number of callers to the BBS. This command does not send a CRLF after the string. Parameters: none Failure State: none Example: comm info write(You are caller number ) numofcallers writeln( to the system.) ----------------------------------------------------------- - 113 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands PAGE Module: Response or Command Description: A command that makes an annoying beeping noise on the SysOp's computer to alert them that the user wishes to chat. Parameters: none Failure State: none Example: 'BEEP' [c] page main p>=5 & hr>=12 ----------------------------------------------------------- PAUSE (<number>) Module: Response or Command Description: A command that makes an annoying beeping noise on the SysOp's computer to alert them that the user wishes to chat. Parameters: nunber of 1/10 seconds to pause Failure State: none Example: comm display_em file (part1.txt) pause (50) file (part2.txt) ----------------------------------------------------------- - 114 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands PREV Module: Response or Command Description: A Fido message area command that will back up to the previous message. Parameters: none Failure State: none Example: comm fido_prev stateon(1) stateoff(2) prev ----------------------------------------------------------- QUOTE Module: Response or Command Description: Command to display an entry from the QUOTES.SOC file. This file is a text file containing quotes, or other words of wisdom, separated by a blank line. Parameters: none Failure State: none Example: comm show_a_quote stateon(1) quote ----------------------------------------------------------- - 115 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands RESETMORE Module: Response or Command Description: A command that will set the "More?" prompt line count to zero so that a full screen must be sent before a "More?" occurs. Parameters: none Failure State: none Example: comm show_longfile forcemore file(longfile.txt) restoremore resetmore ----------------------------------------------------------- RESP <responsemodulelabel> Module: Response Description: Identifies the start of a response module. Parameters: response module label Failure State: n/a Example: resp information 'N' [o,c] file(f:\newuls.txt) 'G' [o,c] file(\bbs\getting.txt) 'S' [o,c] file(\bbs\howsoc.txt) 'Q' [o,c] null main '?' [o] file(helpinfo.txt) '' null ----------------------------------------------------------- - 116 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands RESPOND Module: Response or Command Description: A Fido message area command that will add a reply to the current message. Parameters: none Failure State: Empty TO field in message Example: comm do_respond stateoff(3) stateon(4) respond ----------------------------------------------------------- RESTOREMORE Module: Response or Command Description: A command that will return the "More?" prompt to the user's setting. Parameters: none Failure State: none Example: comm show_longfile forcemore file(longfile.txt) restoremore ----------------------------------------------------------- - 117 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands REVERSE Module: Response or Command Description: A Socrates message area command that will back up the specified number of replies to the current subject. Parameters: number of replies to back up (user input) Failure State: none Example: resp msg_soc '' new 'N' [o,c] new 'M' [o,c] main '0' stay *#* reverse ----------------------------------------------------------- REVERSE1 Module: Response or Command Description: A Socrates message area command that will back up one reply to the current subject. Parameters: none Failure State: none Example: resp msg_soc '' new 'P' [o,c] reverse1 'M' [o,c] main ----------------------------------------------------------- - 118 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SAVE Module: Response or Command Description: A generic message area command that will leave the current message area and save the last message read pointer. Parameters: none Failure State: none Example: RESP fido 'Q' [o,c] save no_area ----------------------------------------------------------- SETPRIV (number) Module: Response or Command Description: A command that will set the privilege level for the current user. Parameters: privilege level Failure State: none Example: setpriv (16) ;after answering questions ----------------------------------------------------------- - 119 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHELL (commandtoexecute) Module: Response or Command Description: Shells to execute the specified command. Note that this is not a DOS shell but a direct execution of a command. The full path, filename and extension of the program to be executed must be specified. Parameters: none Failure State: errorlevel other than zero returned Example: resp files 'DIR' [c] shell(c:\command.com /c dir %d > gate%a) files -L 'DIR' [c] shell(c:\command.com /c dir %d) files L ----------------------------------------------------------- SHOW Module: Response or Command Description: A Fido message area command that will re- display the current message. Parameters: none Failure State: none Example: RESP msg_menu 'S' [o,c] show msg_menu ----------------------------------------------------------- - 120 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWACTIVETIMEBANK Module: Response or Command Description: Display the amount of time available in the Active Time Bank. Parameters: none Failure State: none Example: RESP show_banks 'A' [o,c] showactivetimebank show_banks 'P' [o,c] showpendingtimebank show_banks ----------------------------------------------------------- SHOWCHG Module: Response or Command Description: Change command to display the user's account data. Parameters: none Failure State: none Example: RESP show_user_data 'S' [o,c] showchg show_user_data ----------------------------------------------------------- - 121 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWCOMMINFO Module: Response or Command Description: Command to display the current communications port information. Information is shown in the form of "2400 BAUD,N,8,1". Parameters: none Failure State: none Example: RESP show_comm_data 'S' [o,c] showcomminfo show_user_data ----------------------------------------------------------- SHOWCOMMPORT Module: Response or Command Description: Command to display the current communications port number. Parameters: none Failure State: none Example: RESP show_comm_data 'P' [o,c] showcommport show_user_data ----------------------------------------------------------- - 122 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWDATA (number) Module: Response or Command Description: A Change command that will display the specified user's data field. There are 256 user data field, numbered from 0 to 255. Parameters: number of field to change Failure State: none Example: RESP show_user_data 'D' [o,c] showdata(16) show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWFIRSTNAME Module: Response or Command Description: Change command to display the user's account first name. This shows everything except the last word of the user's name (delimited by a space). If there are no spaces, nothing is shown. Parameters: none Failure State: none Example: comm last_first showlastname write(, ) showfirstname ----------------------------------------------------------- - 123 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWHELP display user help level Module: Response or Command Description: Change command to display the user's account help level. Parameters: none Failure State: none Example: RESP show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWLASTNAME Module: Response or Command Description: Change command to display the user's account last name. This shows the last word of the user's name (delimited by a space). If there are no spaces, the whole name is shown. Parameters: none Failure State: none Example: comm last_first showlastname write(, ) showfirstname ----------------------------------------------------------- - 124 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWLENGTH Module: Response or Command Description: Change command to display the user's account screen length. Parameters: none Failure State: none Example: RESP show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWMORE Module: Response or Command Description: Change command to display the user's account MORE? status. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- - 125 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWNAME Module: Response or Command Description: Change command to display the user's account name. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWPENDINGTIMEBANK Module: Response or Command Description: Display the amount of time available in the Pending Time Bank. Parameters: none Failure State: none Example: resp show_banks 'A' [o,c] showactivetimebank show_banks 'P' [o,c] showpendingtimebank show_banks ----------------------------------------------------------- - 126 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWPRIV Module: Response or Command Description: Change command to display the user's account privilege. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'V' [o,c] showpriv show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWPSWD Module: Response or Command Description: Change command to display the user's account password. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- - 127 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWTERM Module: Response or Command Description: Change command to display the user's account terminal type. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- SHOWTIME Module: Response or Command Description: Change command to display the current time stamp. Parameters: none Failure State: none Example: comm log_entry assignfile(callers.log) startfileoutput showtime writeln() showname writeln() writeln() stopfileoutput ----------------------------------------------------------- - 128 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SHOWTIMELEFT Module: Response or Command Description: Change command to display the user's time remaining. Parameters: none Failure State: none Example: comm outside assignfile(outside.inf) startfileoutput showname writeln() showtimeleft writeln() stopfileoutput ----------------------------------------------------------- SHOWWIDTH Module: Response or Command Description: Change command to display the user's account screen width. Parameters: none Failure State: none Example: resp show_user_data 'D' [o,c] showdata show_user_data 'N' [o,c] showname show_user_data 'P' [o,c] showpswd show_user_data 'W' [o,c] showwidth show_user_data 'L' [o,c] showlength show_user_data 'M' [o,c] showmore show_user_data 'H' [o,c] showhelp show_user_data 'T' [o,c] showterm show_user_data ----------------------------------------------------------- - 129 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SIGNALOFF (signalnumber) Module: Response or Command Description: Command to set the specified user's signal off. Parameters: number of signal to turn off Failure State: none Example: comm read_rules file(rules.txt) signaloff(255) ----------------------------------------------------------- SIGNALON (signalnumber) Module: Response or Command Description: Command to set the specified user's signal on. Parameters: number of signal to turn on Failure State: none Example: comm read_rules file(rules.txt) signalon(255) ----------------------------------------------------------- - 130 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *SKIP* Module: Menu Description: A special code which will skip further display lines in a menu if there are pending commands stacked up. Parameters: none Failure State: n/a Example: menu information *skip* *clear* '---- Information ----'/ 'N)ew Uploads'/ 'G)etting around the BBS'/ 'S)ocrates Message Area Information'/ 'Q)uit to Main Menu'/ *force* ''/ 'Command:' ----------------------------------------------------------- - 131 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands START [(to_name)] Module: Response or Command Description: A Socrates message area command that will allow you to start a new message. If the optional (to_name) follows the command, it will be used for the TO: field. Parameters: TO: field entry (optional) Failure State: (1) empty TO: field (2) empty SUBJECT: field Example: comm do_start stateon(3) stateon(4) start or comm do_start_new stateon(3) stateoff(4) start(SysOp) ----------------------------------------------------------- - 132 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands STARTFILEOUTPUT Module: Response or Command Description: Command to start redirecting text output to a file specified using the ASSIGNFILE or USERASSIGNFILE commands. If the file exists, output will be appended to the end of the existing file. Socrates will remember the name of the the output file assigned until another ASSIGNFILE or USERASSIGNFILE command is executed so that multiple STARTFILEOUTPUT / STOPFILEOUTPUT commands can be executed without having to specify the output file each time. Parameters: none Failure State: none Example: comm userinfo assignfile(userinfo.txt) startfileoutput showname stopfileoutput ----------------------------------------------------------- - 133 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands STOPFILEOUTPUT Module: Response or Command Description: Command to stop redirecting text output to a file specified using the ASSIGNFILE or USERASSIGNFILE commands and close the file. Further information will be displayed normally. Socrates will remember the name of the the output file assigned until another ASSIGNFILE or USERASSIGNFILE command is executed so that multiple STARTFILEOUTPUT / STOPFILEOUTPUT commands can be executed without having to specify the output file each time. Parameters: none Failure State: none Example: comm userinfo assignfile(userinfo.txt) startfileoutput showname stopfileoutput ----------------------------------------------------------- STATEOFF (statenumber) Module: Response or Command Description: Command to set the specified state parameter off. Parameters: number of state parameter to turn off Failure State: none Example: comm fido_linkup stateoff(1) stateon(2) linkup ----------------------------------------------------------- - 134 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands STATEON (statenumber) Module: Response or Command Description: Command to set the specified state parameter on. Parameters: number of state parameter to turn on Failure State: none Example: comm do_start stateon(3) stateon(4) start ----------------------------------------------------------- STAY Module: Response or Command Description: A Socrates message area command that will re- display the current message. Parameters: none Failure State: none Example: resp msg_menu 'S' [o,c] stay msg_menu ----------------------------------------------------------- - 135 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands *SUBJECT* Module: Menu Description: A special code which will output the current subject in the current message area. This is typically used in Socrates type message areas. Parameters: none Failure State: n/a Example: menu msg_soc ''/ *skip* '---- Message Menu ----'/ 'N)ext New Message M)ain Message'/ 'F)orward Subject B)ack Subject'/ '# Ahead/Back Messages'/ 'T)oggle Private Flag'/ 'K)ill Message'/ 'S)ubject Change'/ 'E)nter Message R)espond'/ 'A)rea Change Q)uit'/ *force* '[ ' *subject* ' ]'/ 'Message Command: ' ----------------------------------------------------------- - 136 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands SUBJLIST Module: Response or Command Description: A Socrates message area command that will display a list of the available subjects and their associated number in the current message area for all messages that the user is allowed to see. Parameters: none Failure State: none Example: resp msg_soc 'S' [O,C] *Subjlist gosubj ----------------------------------------------------------- *SUCCESSBREAK* Module: Command Description: A special code which will end the execution of the command list if the previously executed command line succeeded. The calling COMMLIST command will be returned as successfully completed. Parameters: n/a Failure State: n/a Example: comm forgotten2 stateon(3) stateoff(4) enter(SysOp) *SUCCESSBREAK* logoff ----------------------------------------------------------- - 137 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands TIMESCALLED Module: Response or Command Description: A command to display to the user the total number of times they have called the BBS. This command sends a CRLF after the string. Parameters: none Failure State: none Example: comm info writeln("Number of times you called us: ") timescalled ----------------------------------------------------------- UNBANK Module: Response or Command Description: A command to allow the user to take the specified amount of time from the active time bank and convert it to on-line time. Parameters: time to convert (user input) Failure State: amount specified greater than amount in bank Example: menu unbanktime ''/ 'Time to UNBANK: ' resp unbanktime '' null timebank *#* UNBANK timebank ----------------------------------------------------------- - 138 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands UNBANKALL Module: Response or Command Description: A command to allow the user to take all time from the active timebank and convert it to on-line time. Parameters: none Failure State: none Example: menu unbanktime ''/ 'Time to UNBANK: ' resp unbanktime '' null timebank 'ALL' [c] UNBANKALL timebank *#* UNBANK timebank ----------------------------------------------------------- *UNFORCE* Module: Menu Description: A special code which will turn off the *FORCE* mode and skip further display lines in a menu if there are pending commands stacked up and if *SKIP* mode is active. Parameters: none Failure State: n/a Example: menu information *skip* *force* *clear* '---- Information ----'/ *unforce* 'N)ew Uploads'/ 'G)etting around the BBS'/ 'Q)uit to Main Menu'/ *force* ''/ 'Command:' ----------------------------------------------------------- - 139 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands UPLOAD Module: Response or Command Description: Shell to a specified external file transfer protocol passing user input. Parameters: External file transfer protocol command line complete with parameters passed as user input. Failure State: (1) upload problems (2) unable to execute shell Example: resp upload 'X' [o,c] null ul_xmodem 'Y' [o,c] upload(c:\programs\dsz.com port %a speed %b rb %u) 'Z' [o,c] upload(c:\programs\dsz.com port %a speed %b rz %u) '' null files ----------------------------------------------------------- - 140 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands USERASSIGNFILE(filename) Module: Response or Command Description: A command that will accept user input and specify a file for text output. Output can be directed to this file using the STARTFILEOUTPUT command. The STOPFILEOUTPUT command is used to stop output to this file. If the file exists, output will be appended to the existing file. Socrates will remember the name of the the output file assigned until another ASSIGNFILE or USERASSIGNFILE command is executed. Parameters: output file name Failure State: cannot access or create file Example: menu dumpfidomsg "File: " resp dumpfidomsg "" null fido *@* commlist(fido_dump) fido comm fido_dump userassignfile startfileoutput show stopfileoutput ----------------------------------------------------------- - 141 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands USERLIST Module: Response or Command Description: A command to display the list of the users for the system. Socrates will display the list of names that match the user input. If the user input is an asterisk (*) then all users will be listed. Parameters: name fragment to match (user input) Failure State: none Example: menu userlist ''/ 'Pattern to match (* = All): ' resp userlist '' null main *@* userlist main ----------------------------------------------------------- VERSION Module: Response or Command Description: A command to display information about the Socrates version being used. Parameters: none Failure State: none Example: resp main 'V' [o,c] version main ----------------------------------------------------------- - 142 - Socrates BBS (v1.10) APPENDIX 4 - BBS Program Commands WRITE (stringtodisplay) Module: Response or Command Description: A command to display a string to the user. This command does not send a CRLF after the string. Parameters: string to display Failure State: none Example: write(This is the string to display.) ----------------------------------------------------------- WRITELN (stringtodisplay) Module: Response or Command Description: A command to display a string to the user. This command sends a CRLF after the string. Parameters: string to display Failure State: none Example: writeln(This is the string with a CRLF.) ----------------------------------------------------------- - 143 - Socrates BBS (v1.10) APPENDIX 5 - Shell Parameters APPENDIX 5 - Shell Parameters When executing another program (using the SHELL, EDITOUTSIDE, DOWNLOAD or UPLOAD commands), you will often need to send it command line parameters. Socrates will allow you to include command line information to these programs by using shell parameters to pass the data. A parameter is a percent sign (%) followed by a key letter. When SOCRATES executes the command, it converts the parameter into the actual data it represents. The parameters are: %1 - user input %A - Port number (COMx:) %B - Baud rate %D - Download path (no trailing backslash) %U - Upload path (no trailing backslash) %% - a percent sign (%) Examples of the use of these parameters are as follows: 'DIR' [c] shell(c:\command.com /c dir %d > gate%a) files -L 'DIR' [c] shell(c:\command.com /c dir %d) files L menu dl_zmodem 'Files: ' resp dl_zmodem '' null files *@* download(d:\dsz.com port %a speed %b sz %d\%1) files resp upload 'X' [o,c] null ul_xmodem 'Y' [o,c] upload(d:\dsz.com port %a speed %b rb %u) files 'Z' [o,c] upload(d:\dsz.com port %a speed %b rz %u) files '' null files - 144 - Socrates BBS (v1.10) APPENDIX 6 - TimeBanks & Multipliers APPENDIX 6 - TimeBanks & Multipliers TimeBanks Timebanks are a subject that many SysOps are not familiar with, especially those running Fido and Opus systems. SOCRATES will support the use of timebanks (both pending and active) at the SysOp's discretion. A timebank is simply a method for rewarding the users for uploading by granting them time credits on the system based on the amount uploaded. SOCRATES supports on-line credits as well as both active and pending timebanks. The amount of time returned to the user as on-line time is controlled by the ONLINEUPLOADREFUND setting in the initialization file. This time is available to the user immediately and does not reside in a timebank. The system can also be configured to return time to the caller by placing it in an "active" timebank so that the caller can use this time at their convenience. This is controlled by the ACTIVETIMEBANKUPLOADREFUND setting in the initialization file. This extra time resides in the bank until the caller "withdraws" all or part of it. The user only has access to the active timebank. The final option is to have the system store all newly earned refund time in a "pending" timebank which is controlled by the PENDINGTIMEBANKUPLOADREFUND setting in the initialization file. This bank continues to accumulate the time credits in the pending timebank, which the users cannot access. The time credits can be rolled over into the active timebank by the SysOp or the system can automatically roll them over daily through the DAILYTIMEBANKROLLOVER setting. It should be noted that any or all of the three refund types can be used, at the SysOp's discretion. - 145 - Socrates BBS (v1.10) APPENDIX 6 - TimeBanks & Multipliers Time and File Limit Multipliers SOCRATES is configured with default session and daily time limits and session, daily and total download limits. This is done through various settings in the initialization file. These defaults can be modified through the use of multipliers. Multipliers are used to modify the defaults by first taking the product of the multiplier and the default and then dividing by twenty. The result is then the value used as the new limit. For example, a multiplier of 20 yields no change while a multiplier of 40 doubles the limit and 10 will reduce the limit by half. The nice part about this is that multipliers can be applied to the default time and file limit settings, based on set conditions using the TIMELIMIT and FILESMULT settings in the initialization file. For example, consider the following from an initialization file: dailytimelimit 60 timelimit 5 p=0 ;New Callers timelimit 30 p>=5 ;Registered Users timelimit 50 p>=10 ;Good Regular Users timelimit 60 p>=100 ;Co-SysOps The default (or baseline) daily time limit is 60 minutes. New callers are given 60 x 5 / 20 = 15 minutes, whereas registered users, good regular users and co-sysops are allowed 90 minutes, 150 minutes and 180 minutes, respectively. This same type of thing can be done for the downloading limits by using the FILESMULT setting with different conditions. - 146 - Socrates BBS (v1.10) APPENDIX 7 - FidoNet APPENDIX 7 - FidoNet The FidoNet network is a loose coalition of many different bulletin board systems. "FidoNet" and "Fido" are registered trademarks of Tom Jennings. The network is by no means limited to the Fido software; there are several "FidoNet compatible" systems and a number of network mail programs which interface with the network. A short history lesson will help in understanding FidoNet. Tom Jennings was in San Francisco, and John Madill was in Baltimore, both working on the Fido BBS software. In the spirit of finding out if it could be done, they decided to add code to the system to support a dialup connection with no human intervention during the wee hours when the sysops were sleeping and the systems were free. This quickly became a useful function, since both systems and both sysops were busy and it was a convenient method of exchanging information. From this chance beginning in May 1984, growth was phenomenal. By August 1984, there were 30 nodes; by September there were 50. By February 1985, there were 160 systems, and a group of sysops in St. Louis had taken over the administration of the list of systems. In June 1985 the network converted to a two-part addressing scheme (Net/Node) to support the growth. Today, the network has grown to over 7000 nodes around the world and a zone-based nodelist has been developed to facilitate communication with systems on other continents. All of this is held together by two documents, each published weekly. One of these is a list of every system in the network, with net/node address, telephone number, and other useful information; this is called the NODELIST. The other document is a newsletter, FidoNews. Both the nodelist changes and FidoNews are distributed using the network; once your system is up and running you will have a source for the most current information. To obtain help on FidoNet or a related software product, use FidoNet! The best source is a local sysop who has done what you want to do. - 147 - Socrates BBS (v1.10) APPENDIX 8 - Registration Form APPENDIX 8 - Registration Form ------------------------------------------------------------ Remit to: Mikronetics 2114 Weatherton Dr. Wilmington, DE 19810 United States of America ------------------------------------------------------------ Quan Item US Price ---- ---- -- ----- ___ SOCRATES Registration....... @ $40 ea $__________ (includes registration plus program and manual on disk) Add $1/copy for 3.5" disk $__________ Subtotal $__________ Shipping ($1/copy, max $10) $__________ TOTAL $__________ Name_____________________________________________________ Company_____________________________________________________ Address_____________________________________________________ _____________________________________________________ _____________________________________________________ Phone(______)________________ BBS(______)________________ Where did you hear of or obtain SOCRATES? ____________________________________________________ Comments____________________________________________________ ____________________________________________________ ____________________________________________________ ____________________________________________________ - 148 - Socrates BBS (v1.10) INDEX INDEX CHGMORE 22, 80 CHGNAME 22, 80 CHGPSWD 22, 81 %% 25, 144 CHGTERM 22, 81 %1 25, 144 CHGWIDTH 22, 82 %A 25, 84, 120, 140, 144 CLEARBEFOREMESSAGE 8, 45 %B 25, 84, 140, 144 COMM 20, 83 %D 25, 84, 120, 144 COMM.SOC 5, 13, 26 %U 25, 140, 144 COMMINDX.SOC 5, 13, 26 COMMLIST 20, 21, 72, 73, *!* 19, 72 74, 83, 94, 137 *#* 19, 73 Condition 6, 10, 11, 15, *%* 19, 74 17, 18, 20, 24, 39, 42, *@* 19, 73 81 *CLEAR* 16, 82 CONTINUOUS 21, 84 *FAILBREAK* 20, 83, 94 CR-AREAS 4, 5, 11, 26 *FAILSUCCESS* 20, 94 CR-FILES 4, 5, 12 *FORCE* 16, 17, 97, 139 CR-INITS 4, 5, 9, 26 *HIGHEST* 16, 100 CR-SOC 4, 5, 13, 26 *MSGNUM* 16, 100, 111 CR-FILES 26 *SKIP* 16, 17, 131, 139 CUTATSEENBY 8, 46 *SUBJECT* 16, 136 *SUCCESSBREAK* 20, 137 D 41 *UNFORCE* 16, 139 DAILYBYTESRATIO 8, 46 DAILYBYTESTHRESHOLD 8, 46 /1 28 DAILYFILESRATIO 8, 47 /B 28 DAILYFILESTHRESHOLD 8, 47 /L 28 DAILYTIMEBANKROLLOVER 8, /O 28 47, 145 DAILYTIMELIMIT 8, 48 A 41 DBR 40 ABORT 22, 74 DBT 39 ACTIVETIMEBANKUPLOADREFUND DEFAULTCRASHON 8, 48 8, 43, 145 DEFAULTFILEATTACHON 8, 48 ADD 23, 43, 66, 75, 86 DEFAULTKILLSENTON 8, 49 AHEAD 23, 75 DEFAULTSINCELASTCALLEDTHRES AHEAD1 23, 76 HOLD 9, 49 ALIAS 8, 43 DEFAULTTIMESCALLEDTHRESHOLD ALLOWQUOTING 8, 44 9, 50 ANONYMOUS 8, 44 Delimited string 15, 38 ANONYMOUSNAME 8, 44 Delimiter 15, 17, 18, 38 APPENDORIGIN 8, 45, 60 DFR 40 AREA 22, 76 DFT 39 AREAS.SOC 5, 11, 26, 76 Directories 5, 6, 10, 11, ASSIGNFILE 21, 77, 133, 26 134, 141 DOWNLOAD 23, 25, 84, 144 BACK 23, 77 EDITABORT 23, 85 BACK1 23, 78 EDITATTACH 23, 85 BAUD 7, 45 EDITCHGSUBJ 23, 86 EDITCHGTO 23, 86 CHGDATA 22, 78 EDITCONT 23, 87 CHGHELP 22, 79 EDITCRASH 23, 87 CHGLENGTH 22, 79 EDITDELETEFROM 23, 88 - 149 - Socrates BBS (v1.10) INDEX EDITDELETETO 23, 88 INTROCOMM 7, 54 EDITEDIT 23, 89 EDITFIDONET 23, 89 KILL 22, 101 EDITINSERT 23, 90 KILLCRIT 35, 70 EDITKILLSENT 23, 90 EDITLIST 23, 91 L 39 EDITOUTSIDE 23, 25, 49, LASTTIMECALLED 21, 102 91, 144 LINE 21, 102 EDITOUTSIDEFILE 8, 49, 91 LINKDOWN 22, 103 EDITPRIVATE 23, 92 LINKUP 22, 103 EDITSAVE 23, 92 LISTFILES 23, 104 ENDCHATMSG 9, 50 LN 41 ENTER 22, 23, 43, 64, 65, LOGFILE 9, 54 66, 93 LOGOFF 21, 104 Errorlevel 29, 30, 31, 93 LOGONTIME 7, 54 EXCEEDEDDAILYTLIMCOMM 8, 50 M 41 EXIT 21, 29, 32, 93 MAIN 23, 105 MENU 15, 105 FA 11, 41 MENU.SOC 5, 13, 26 FIDONET 8, 51 MENUINDX.SOC 5, 13, 26 FILE 21, 95 MODATTACH 22, 106 FILEAREA 23, 95 MODCRASH 22, 106 Filelist 13, 21, 25, 96, MODEMHANGUP 7, 55 104 MODEMINIT 7, 55 FILES.BBS 27, 51 MODFIDONETFROM 22, 107 FILES.SOC 5, 12, 26, 95 MODFIDONETTO 22, 107 FILESLISTFILE 8, 12, 51, MODFROM 22, 108 104 MODKILLSENT 22, 108 FILESMULT 8, 51, 146 MODPRIVATE 22, 109 FIRSTMENU 7, 52 MODSUBJECT 22, 109 FLST 24, 25, 96 MODTO 22, 110 FLST.SOC 5, 13, 26 MORENOW 21, 110 FLSTINDX.SOC 5, 13, 26 MOREPROMPT 9, 56 FORCEDONTMORE 21, 97 MR 39 FORCEMORE 21, 98 MSGNUM 22, 111 FORCEPRIVATE 8, 52 MULT.SOC 5, 9, 26 FORGOTPASSWORDCOMM 7, 52 MULTINDX.SOC 5, 26 FORGOTPASSWORDMENU 7, 53 Multipliers 43, 46, 47, FORWARD 23, 98 48, 49, 50, 51, 60, 61, FORWARD1 23, 99 63, 64, 66, 67, 68, 69, FOSSIL 4, 28 146 GOSUBJ 23, 99 NAMEPROMPT 7, 56 NET 7, 56 H 41 NetMail 10 HEADERS 22, 100 NEW 23, 112 HOTKEYS 9, 53, 61, 67, 69, NEW_USER1 57 70 NEW_USER2 57 HR 41 NEWUSERCOMM1 7, 57 NEWUSERCOMM2 7, 57 INACTIVITYTIMELIMIT 9, 53 NEWUSERHELP 7, 57 INFO 21, 101 NEWUSERMENU 7, 58 INITS.SOC 5, 9, 26 NEWUSERPRIV 7, 58 - 150 - Socrates BBS (v1.10) INDEX NEWUSERSCREENLENGTH 7, 58 SETKILLSENT 8, 65 NEWUSERSCREENWIDTH 7, 59 SETPRIV 21, 119 NEWUSERSIGNALS 7, 59 SFR 40 NEXT 22, 112 SFT 39 NODE 7, 59 SHELL 21, 25, 120, 144 NULL 21, 113 Shell parameters 144 NUMOFCALLERS 21, 113 SHOW 22, 120 SHOWACTIVETIMEBANK 24, 121 ONLINEUPLOADREFUND 8, 60, SHOWCHG 22, 121 145 SHOWCOMMINFO 22, 122 ORIGINLINE 8, 60 SHOWCOMMPORT 22, 122 SHOWDATA 22, 123 P 41 SHOWFILEDATE 8, 65 PAGE 21, 114 SHOWFIRSTNAME 22, 123 PASSWORDATTEMPTS 7, 60 SHOWHELP 22, 124 PAUSE 21, 114 SHOWLASTNAME 22, 124 PAUSEKEY 9, 61, 69 SHOWLENGTH 22, 125 PENDINGTIMEBANKUPLOADREFUND SHOWMORE 22, 125 8, 61, 145 SHOWNAME 22, 126 POINT 7, 61 SHOWPENDINGTIMEBANK 24, PORT 7, 62 126 PREV 22, 115 SHOWPRIV 22, 127 PRIVATESYSTEM 7, 62 SHOWPSWD 22, 127 SHOWTERM 22, 128 QUOTE 21, 115 SHOWTIME 22, 128 QUOTETRK.SOC 5, 26 SHOWTIMELEFT 22, 129 SHOWWIDTH 22, 129 READPRIVATE 8, 62 SIGNALOFF 24, 130 RELOGIN 4, 5, 26, 29, 31, SIGNALON 24, 130 32 SINCELASTCALLEDMULT 9, 66 RESETMORE 21, 116 SKIPMESSAGEINPUT 8, 66 RESP 17, 18, 116 SOC 39 RESP.SOC 5, 13, 26 SOC-AREA.TXT 5, 10 RESPINDX.SOC 5, 13, 26 SOC-FILE.TXT 5, 11 RESPOND 22, 23, 43, 66, SOC-INIT.TXT 5, 7 86, 117 SOC-MSG 4, 5, 26, 31, 35, RESTOREMORE 21, 117 36, 37 REVERSE 23, 118 SOC-PROG.TXT 5, 13 REVERSE1 23, 118 SOC-SCAN 4, 5, 26, 31 SOC-USER 4, 5, 70 S 39 SOCRATES 4, 5, 29, 31 SAVE 22, 119 SOCRATES.LOG 54 SBR 40 SOC-SCAN 37 SBT 39 SOC-USER 26, 34 SCT 40 START 23, 43, 64, 65, 66, SESSIONBYTESRATIO 8, 63 132 SESSIONBYTESTHRESHOLD 8, STARTCHATMSG 9, 66 63 STARTFILEOUTPUT 21, 77, SESSIONFILESRATIO 8, 63 84, 102, 133, 134, 141 SESSIONFILESTHRESHOLD 8, STATEOFF 24, 134 64 STATEON 24, 135 SESSIONTIMELIMIT 8, 64 STAY 23, 135 SETCRASH 8, 64 STOPFILEOUTPUT 21, 77, SETFILEATTACH 8, 65 133, 134, 141 - 151 - Socrates BBS (v1.10) INDEX STOPKEY 9, 67, 70 SUBJLIST 23, 137 SysOp 1, 2, 6, 33, 34, 147 TBR 40 TBT 39 TCT 40 TFR 40 TFT 40 Timebanks 8, 24, 43, 47, 61, 121, 126, 138, 139, 145 TIMELIMIT 8, 67, 146 TIMESCALLED 21, 138 TIMESCALLEDMULT 9, 68 TM 41 TOTALBYTESRATIO 8, 68 TOTALBYTESTHRESHOLD 8, 68 TOTALFILESRATIO 8, 69 TOTALFILESTHRESHOLD 8, 69 UNBANK 24, 138 UNBANKALL 24, 139 UPLOAD 23, 25, 140, 144 USEPAUSEKEY 9, 61, 69 User data 72, 73, 74 User input 19, 25, 144 USERASSIGNFILE 21, 77, 133, 134, 141 USERDELETE 9, 35, 70 USERLIST 21, 142 USERS1.SOC 5, 26, 34 USERS2.SOC 5, 26, 34 USERS3.SOC 5, 26, 34 USESTOPKEY 9, 67, 70 VERSION 21, 142 W 41 WELCOMECOMM 7, 70 WRITE 21, 143 WRITELN 21, 94, 143 WRITEPRIVATE 8, 71 Z 39 ZONE 7, 71 - 152 -