THE ICONOCLAST MULTIPLE BBS SYSTEM --- Documentation Copyright 1987 Michael Cox - CVI Software All rights reserved LEGAL NOTICE: (AUTHOR'S NOTE: This file is the COMPLETE documentation for the ICONOCLAST system. It is released in this way so you can be fully familiar with the system before you send in your contribution. If this looks good to you, you can obtain the entire system, ready to run, for a minimum contribution of $25. See below for details.) This system is NOT in the public domain. It may NOT be put on any collection of public-domain software that is sold for more than the price of a blank disk, without written permission from the author (see below). This includes but is not limited to user group libraries. This system is distributed as SHAREWARE. If you like it or use it, please send a donation of $25 or more to the address at the bottom of this document. Persons who register their membership in this way will be entitled to a year's membership on the ICONOCLAST HQ home board, and all the support files, online help, and utility programs online, and any revised version of this system up to version 1.9. Persons who send $50 or more are entitled to all the above at higher access, and a free copy of ICONOCLAST 2.0 when it is available. These contributors also receive priority if and when an ICONOCLAST network goes online. Besides, I'm a great guy and you really should send me all your money. In fact, just send a blank check. Only ICONOCLAST 1.0 is released as Shareware. Higher numbered versions will be released only to registered users. You may release this archive in any free way you desire PROVIDED you keep all files, unchanged, in the archive. Your thoughts and ideas (and the inevitable bug reports) are very welcome on the ICONOCLAST home board at (915) 833-3899. The code of the program itself may not be altered in any way. If you use the system without sending in a donation, shame on you. A list of registered ICONOCLAST boards appears on IHQ and elsewhere, and everyone will see what a cheapskate you are... Now on to the good stuff. WHAT IS ICONOCLAST? ICONOCLAST is a bulletin board system (BBS). It has all the usual features of a good BBS and very much more: - Userlogs with full updating system usage data & 10 character passwords; 256 access levels, 256 privilege levels, and 256 time limit levels, giving 16,777,216 possible access combinations; keeps track of high message, message waiting, dead messages, total uploads, total downloads, more. - Message base with 20 conferences of 10 subconferences each, reply tracing, message threading, post-save editing, and 256 private discussion "rooms" for a total of 51,200 separate possible discussion areas. - Choice of "walls" between SIGS or global commands with option for SIGS. - Works with virtually any modem. - XMODEM database that can support 3 download devices and one upload device, all completely assignable. That is, if you have 2 external drives and a 1-meg card (the recommended configuration) you can assign your upload device to the RAMdisk, your primary and secondary download devices to df1 and df2, and your third database device to the RAMdisk again (or to df0). The database has 9 access-assignable subareas. They can be individually switched off, to upload only, download only, or both ways. Each file listing contains the file size, name of uploader, 80 character description, and an invisible Compuserve-like keyword listing for subject searches. - An very easy-to-use English sentence command parser, with automatic single-letter shortcuts. Understands a wide variety of synonyms for any command. For instance, Goodbye, Bye, Later, Off, Quit, etc., and G, all do the same thing. A very Amiga-like feature, don't you think? - A textfile area with 10 catalogs of 20 files each. Assignable storage device. - A 20-file HELP function that chooses appropriate HELP files depending on where the user is working. - A variety of changable environmental textfiles throughout the board, including 20 rewritable HELP files. - A Voting function that allows both ballots and questionnaires, and both individual and tallied responses. - A Userlog listing that displays name, computer type, and city; also switchable online registration. - A separate window while a user is online contains most of his user data, and the system calendar and clock. - Complete remote SigOp and SysOp access, including drop-to-DOS for SYSOPs. 200 user levels, 50 SigOp levels, 5 SYSOP levels. - Switchable CHAT mode. - NO backdoors. I was tempted but I took them out for security. - Automatic dead message revival. - Many, many switchable choices as to board configuration, etc. - A DayFile function that allows you to review everything that happens online, even from a remote computer. - All of the above makes full use of the Amiga's interface and features: menus, multiple windows and screens, 2 typefonts. This BBS is written specifically for the Amiga, not just ported over from some other system. Now here's the kicker. Multiply ALL of the above (and much more covered later) BY FOUR and you have the ICONOCLAST system! This is because ICONOCLAST has the ability to run four completely independent BBS systems from one Amiga, over one telephone line. (Up to 4 lines in the Amiga 2000 version, maybe...) This includes ALL the configuration choices. For instance, one BBS might use the hard disk as its database while the other might use DF2. All environment, userlogs, letterlogs and other support files are DOS-isolated from each other. Users with the appropriate privilege level can, if the feature is enabled, move between boards at will with the DOORS command; BUT they have to be registered separately on EACH board. The ONLY thing in common between boards is the HELP directory and the menus. If you will think about it a minute you will see some very handy uses for these boards. You can set up a complete "sub-board" for younger members. You can devote an entire board to a specific purpose or interest. You can allow only higher-privilege level members to use the DOORS and thus get a private board that is completely invisible and unknown to the passive users. This is ideal for user group committees, etc. Much more quite interesting stuff is included that will be covered later. Sit back, this is going to take a while. But don't worry, ICONOCLAST was designed to be the easiest BBS to use available while at the same time offering more features than commercially available packages. ICONOCLAST will work just fine on a 512K, single drive Amiga, or on the recommended 1 1/2 meg Amiga with 3 drives, or anything in between. It handles any baud rate from 300 to 2400, and can be matched to the instruction set of almost any modem. (See elsewhere for instructions on matching the software to your modem.) We suggest you put pieces of this file somewhere in the textbase to allow people to find out about the system. Or, just write your own HELP files. Oh yes, there's also a simple XMODEM terminal and autodialer so you can check in other places without dropping ICONOCLAST. It downloads things right into your database device and directory. You have to enter the download into the BBS catalog yourself. Also, for speed online, it names your downlaods as Download1, Download2, etc., so keep track of the real names and rename them later. The terminal is so self-explanatory that that's all the instructions you should need for it. Reach it by pressing F2 from the WAITING screen. Cues appear in the Information window. ICONOCLAST is completely multitasking. With a 1-meg card there is plenty of free RAM to run other well-behaved applications, and ICONOCLAST runs in its own screen so it can be pushed totally out of view. You need not give up your computer to run a BBS! The board will beep for attention when you are being paged for a CHAT, but other than that, neither you nor the user will be aware of each other using the computer. Suddenly your Amiga is a multi-user computer! You can even switch the external disks if need be; ICONOCLAST will ask for them back if it needs them. (To do this, use the DISK NAME as the default device: example, if the disk name is Disk2, instead of df2:, use Disk2:.) There are several other shareware utilities by other authors that you will find of great value in running this system. The first is called BLITZFONTS, the other is an archive called RECRAM. The first drastically speeds up text output and brings the program up to quite respectable speeds. The other creates a RAMdisk that survives rebooting. This makes it practical to use the RAMdisk as any of the assignable BBS devices. You can even run the entire system from the RAMdisk, if you have enough memory! (You can do this anyway, but if the board crashes with the ordinary RAMdisk, you're sunk.) To do this, just setup your startup sequence to copy the essential system files and the entire BBS directories from DF0: to the RAMdisk, and to assign the SYS: device to the RAMdisk. Tell your board configuration file to look for SYS: instead of DF0: for the appropriate files. The board runs extremely fast when you do this, but again, we don't recommend it without the rebootable RAMdisk. Also remember to backup like a maniac when running this way. This configuration is especially helpful when using a 2400 baud modem. Due to legal ramifications it is not possible to include those files in this package, but they are widely available. They are on ICONOCLAST HQ if you can't find them locally. CREATING THE WORK DISK You run ICONOCLAST off a Work Disk. This contains the files and directory structures that ICONOCLAST needs to operate. (The system data is DOS-isolated and cannot be reached from online except from drop-to-DOS mode.) The basic structure of all ICONOCLAST disks, system and database, is as follows: - All contain up to 4 main directories called BBS1, BBS2, etc. The system disk will also contain all the essential Workbench files with an abbreviated C directory. Also there is a HELP directory that contains the menus and HELP files. This is so that all four boards can use the same help files and menus, saving disk space. (These are the ONLY files they share.) The names of the help files are "text10-X" where X is the number of the file. The menus are named as described below. - Each of these BBS directories MAY contain any of the following directories: Text, Datbase, and Answers (df0: only). Text is for ALL textfiles of any nature, except help files, menus and those available for downloading. Datbase is the directory for your database files. Up to four of these may exist, in any combination of devices, for the four systems. The disks in the database devices generally have only the main BBS directories and this directory. They MUST be arranged with directories nested in this way or the system will not allow files in them to be downloaded. The directory Answers is for individual user questionnaires when VOTE is used in questionnaire mode. - BBS1 contains a number of files that it uses for all its upkeep functions, with names like Userlog, Mfile, Trackref, etc. DO NOT alter these files unless you know what you're doing! These are generally self-updating. However, as anyone who has ever operated a BBS knows, disastrous things can happen to the most well-tended BBS. If, for instance, you drop power at a crucial moment or a disk goes bad (this tends to happen running BBS systems), chances are you will damage a file beyond repair. And it is not beyond possibility that this preliminary version of the program might have undetected bugs that would drop the system while a file was being written. Many of the files can be re-created if need be, but we cannot stress highly enough to MAKE BACKUPS, ideally EVERY DAY, of your Work Disk. I guarantee that the time will come when you will be very glad to have them. (The internal file structure requirements and several file-repair programs are available to interested registered users on ICONOCLAST HQ.) To make the work disk, make a copy of Workbench 1.2. Eliminate enough stuff to put all these files in the root directory and either MAKE1, MAKE2 or MAKE3 into the S directory, depending on whether you have 1, 2, or 3 drives. Also put AmigaBasic in the root directory of df0: if you have one drive or df1: if you have more than one. Yes, this is written in AmigaBasic. But before you decide you don't like it before you even see it, I should remind you that the most popular BBS system I know of, RBBS, is written in BASIC, and certainly not AmigaBasic. The language, besides a few maddening limitations, CAN be a very nice tool. And with the addition of BlitzFonts, its speed approaches C speeds at times. The Xmodem transfer section is written in C, so it should handle up to 2400 baud nicely, and the board does a respectable job at 2400 baud elsewhere, too, especially if running off the RAMdisk. The compiled version, which will be released when the compiler is available, will bring the speed up to C speeds or better and will allow fine-tuning of a few minor inconveniences. Besides, if I had written this in C, I'd still be working on it in 1988. As it is, this is probably my last large BASIC program due to the impossibility of getting any real support from anyone on this language. This is a shame as it orphans a large segment of Amiga owners who aren't confident with their C yet. Oh well. As to the limitations. The most maddening of these is the inability to pass chr$(17) and (19) through the serial port, making the writing of an XMODEM routine IMPOSSIBLE (as far as I know - if you know otherwise please tell me!) in AmigaBasic, since blocks that contain those characters will have them censored. The PD utility SetSerial helps, but does NOT solve the problem. The way I got around this was to write the XMODEM driver in C and call it from BASIC. Unfortunately, this means I have to close the modem file and reopen it with the driver, meaning you have to flip the DTR switch on your modem to be always on to keep from disconnecting people when this happens. The consequence of THAT is that it is difficult (but not impossible) to see from the software when a user drops carrier. Also it's not possible to force a disconnect by closing the modem file if TR is forced high. Again, if you know of any workarounds for any of these problems, I'd love to hear them. Actually, the C XMODEM driver is a blessing in disguise, since it is fast enough to handle 2400 baud easily. None of these things are terribly big obstacles. The board does perform timeout logoffs that reset everything, and the only other consequence is that the user must disconnect from HIS end. You'll find that the system recovers from almost all touchy situations just fine. When the compiler is available, it will be possible to go into the code and change the way the serial port is opened, eliminating the entire problem. At any rate ICONOCLAST is a quite dependable system, just as it is right now. I have had it running in various incarnations for well over a year now. Okay, back to work. Boot with this new Workbench disk, put blank formatted disks in your other drives, and EXECUTE the file you placed in the S directory. This will create all the necessary directory structures and supporting files. This is a good time to mention the MODEM file. It is set up to work with a Hayes-compatible GVC Supermodem 1200, but should work with most Hayes compatible modems. Some users may want to change the switch settings. You can change this file if you need to; that's why it's there. Use a text editor to construct a four-line file. The first line should be your modem's sequence to RESET to power-on defaults. The second line should be the instructions needed to set your modem up to auto-answer, with any other instructions; the third is any switch settings. (If you don't need this line, put a benign command such as an attention command on it. There MUST be something on the line.) See the existing MODEM file itself for suggestions written in the Hayes command set. You may have to experiment a bit here. The fourth line is your modem's sequence to take the modem OFF HOOK. Proper setting of these four strings should allow the use of any modem with ICONOCLAST. If you find a good, reliable MODEM file for other types of modems, feel free to include them in this archive for redistribution, with the modem type as the filename. (Also please upload it to ICONOCLAST HQ.) You can sign the file at the bottom with your name and board telephone number if you wish, as long as the first four lines are modem instructions. Contrariwise, if you find that the archive in your posession has a file named with your type of modem, rename the existing MODEM file to "GVC1200" and rename your modem's file "Modem". If you have questions about the file, contact the person whose name appears in the file. Reboot the system with the Work Disk in DF0:. As soon as the screen turns black, press the shifted-1 key (!). This will trigger the BBS Coldstart sequence. You will be asked if you're certain you want to do this before it executes. This is also how you open up a sub-board. When asked, enter BBS1 to BBS4 as the board directory, depending on your preference. The system will set up a board with standard default settings that you can change later.(Open them up in order: BBS1 first, etc.) The system is immediately ready for a call. If you do nothing, in about two minutes the screen will fade out and disappear; press F1 to get it back. (The menu options are visible even when the screen is blanked, and only the ICONOCLAST screen is affected.) The reason for this blank screen is to keep the WAITING FOR A CALL screen from eventually "burning" into your monitor screen. You can look at one nice feature right away. From the first menu select "Toggle Displays". This opens a small window in the Workbench screen, with reduced type, so that you can monitor and interact with the board from the Workbench screen if you like. Choose the full-screen window for now. The first thing you MUST do is register yourself as a user. You MUST enter user 1 as SYSOP, password of your choice, access level 255, privilege level 255, time limit 255. You can do this from the UPKEEP menu with the ADD USER option. Now, add another listing for yourself with a different password. The reason for this is that all the logon textfiles are skipped for convenience when user 1 logs on, and occasionally you will want to take a look at them. OK, you're all set. Hit RETURN to log on the board. Use your user number 2 name and password. Note that users can enter either their name OR their user number at the prompt. Note the many textfiles and what their names are; you can change these later to suit yourself. Try some obscure commands and see if the system recognizes them. You will be surprised to find that the system typically understands about 95% of the legitimate things people enter. (They must of course be spelled correctly!). Due to a peculiarity of AmigaBasic, the first user on after a restart will have a slightly slower board than usual. Also, you won't be able to do much yet, as there isn't anything there yet. Requesting some things will have pretty odd results. You must create the board yourself to a large extent. (A note here: Logging onto a board that is missing some of its essential files will cause some very strange results. If you change a default device, move the required files before logging on.) Don't worry about trying to master the commands just yet. Treat it like a new BBS you're calling for the first time. When you are through and have a basic feel of the board, log off and let the system recycle (this takes about 10 seconds). We will now examine your offline options. OFFLINE COMMANDS All offline commands are operated from the pulldown menus. There are three of these, labeled Environment, Upkeep and Interaction. ENVIRONMENT Board Configuration - This is where you select various options that affect how the board operates. These can be different for each of the 4 possible boards. DB Drive 1-3 determines on which drives, and in what order, the system looks for that board's XMODEM database. (It looks for the BBS?/Datbase directory on the selected disk, ? being the board number.) Another listing assigns the default upload device. Unregistered Access determines whether nonmembers will be allowed on the system at all. If set to 0, when a nonmember calls he will be shown the NewUser environment file and disconnected. If allowed on, another setting in this menu allows you to set his privilege level. Online Registration determines whether a new user will be allowed to use the direct registration option to place his name in the userlog. If set to 0, he must notify and be registered by the SYSOP. Even if set to 1, his access, privilege level and time limit are at the New User level; the only difference is that now when he calls, he will be asked for his password, and people will be able to send mail to him. The access, privilege and time limit must be upgraded by a SYSOP. Message Base Drive determines on which drive the system will look for that board's message base. This will usually be DF0: or SYS:. BBS Choice determines whether the other boards in the system can be accessed from the present board. The possible settings are: Ask for board choice immediately upon logon, Allow users with sufficient privilege level to use DOORS command, Allow ALL users to use DOORS, and disable DOORS entirely, including at logon. Note that since each board can have separate settings for this, it is possible to allow switching to a board that does not allow switching back. (Users are cleanly logged off of one board before jumping to another.) Echo incoming characters allows you to set the default to half duplex; users can still use the DUPLEX command at the prompt to switch to full duplex. Voting allows you to set the VOTE command to either questionnaire format (stores each user's answers separately), Ballot format (totals responses to each question), or disabled. SIG Divisions determines whether your board will work as one large message base with subdivisions, or as segmented SIGS. In the first configuration, the global commands NEW, BROWSE work on ALL SIGS. In the second, users must choose a SIG to work in FIRST. Upload Device chooses which device database uploads (and downloads from the built-in terminal) will be routed to. DayFile Device is where you want your DayFile stored (RAMdisk is recommended for best board speed). If you set this to PRT:, the DayFile will be printed to your printer (make sure it's on!). To disable the DayFile, enter NIL: as the device. I suggest you have all four boards use the same DayFile. Textbase Configuration - This is how you assign names to the text directories and the files within them. The names of the ten directories will appear; you can change any of them by entering [R]. Entering the number of the directory will show you its contents. This is where you name the files themselves. (The files are not stored under these names on the disk; see "Textfiles".) Database configuration - This allows you to name each database, enable or disable it, set the access levels required to use it, and set the data direction. This last option is a good way to check uploaded files before allowing them to be downloaded; specify a database for uploads, set it to Upload Only, and set the rest to Download Only. Now incoming files must be moved by a SYSOP to a download database before they can be downloaded. This is an easy operation, and the DayFile shows you what the file was; see DATABASE for details. NOTE: If you begin by having all areas on DF0: and later decide to move the database or textbase to another drive, here's what you do: Format a disk and create a directory called BBS1 (or whatever BBS you want it for). WITHIN that directory, create another one called either TEXT or DATBASE, depending on which area is being moved. Now transfer all the files in the original TEXT or DATBASE directory over to your new one. Last of all, if you are moving the database, copy the file named "Database" from the BBS1 (or whatever number) directory into the BBS1 (or whatever number) directory on your new disk. Now boot the board and change the appropriate default under BOARD CONFIG. End the program and run it again, and you are set. Note that you can use this feature to create multiple database disks, since the contents of the database are contained in the Database file. (To make the board see the changed disk you must reboot the program.) Conference Set - This is how you name each of your 20 conferences and 10 subtopics for each. It works much like the Textbase Configuration option. In ICONOCLAST, each message is assigned to one of the conference and subtopic areas. It is recommended that you use only as many of these as is justified by your traffic level; too many conferences spread among too few users results in fragmenting of the message base and reduces the utility of the message system. BBS Names - This and the next command are the only commands in the entire menu that affect ALL of the 4 sub-boards. This is where you enter the names of the boards. You must give a board a name to activate it. when other boards are open, the text color will change depending on which board is active. This way you can tell at a glance which BBS is online. Default BBS - This command does two things simultaneously. It determines which sub-board all the rest of the MENU commands temporarily work on, and it determines which is the default board, the one the system powers up to and answers the phone with. If you intend only to change some parameters on another board, make sure you reset this option to your main board when finished. Otherwise the board you switched to will be the board that answers the phone. Quit - Quit the program. Closes all files neatly and returns to DOS. Doesn't ask if you're sure, so be sure. UPKEEP This is where all the board's upkeep is taken care of. Most of these functions are available remotely (see "Backstage"). Add User - Adds a completely unknown user to the userlog. This is not the option you use to validate a user who has already registered, using the online registration option; use Edit User for that. This is the equivalent of online registration, except that it allows the setting of access, privilege and time limit. This is a good time to examine exactly what parameters are stored in a user's record, and what they mean. Name - Up to 20 letters. Duplicate names are not allowed. Password - Up to 10 characters, case ignored. Address City/State Phone Last on - Date of user's last call. First on - Date user was entered in log. High message - Highest numbered message user has read. Computer type - Used for information only, controls no parameters. Total calls - Total number of logons by user since entered. Uploads - Total number of files uploaded by user. Downloads - Total number of files downloaded by user. Screen width - in characters. ICONOCLAST formats to any screen width. Linefeeds - Whether or not the user requires linefeeds. Upon logon, linefeeds are sent until either the user is recognized, or in the case of a new user, until the "Linefeeds?" question is answered. Age Access - This controls several different things. Users with access of 250 to 255 are SYSOP level users, able to perform all possible remote functions. Access 200 - 249 is SigOp level, with the power to see private messages, delete any message, and delete any database file. The other access levels are user levels. The significance of the different levels is in the required access levels in the database, and the fact that each level can send messages visible only to others of THAT access level (see "Hidden Save"). All other presettable parameters are controlled with the Privilege level. Privilege level - A number from 1 to 255, determining what functions a user is allowed to perform while online. It is really a byte-wide bitmap, in which each bit represents a function. To determine a user's privilege level, add up the listed numbers below which correspond to the desired functions. 1 - User can request a CHAT. 2 - User can access the Text directories. 4 - User can send messages. 8 - User can read messages. 16 - User can access databases allowed by his access level. 32 - User can send Hidden messages (see "Hidden Save"). 64 - User can still VOTE. (This is toggled when he DOES vote.) 128 - User can use DOORS command (if enabled). (All these appear in the INFO window for reference when you need them.) For example, say you want to allow a user to do everything except send messages. Add up all the rest of the functions: 1 + 2 + 8 + 16 + 64 + 128 = 219, which is entered as the privilege level. All of these remain constant unless changed by a SYSOP, except the VOTE bit which is reset when the user votes, allowing him to vote only once. The Reset Vote menu option resets ALL registered user's privilege flags to let them VOTE again. (The system automatically "extends the franchise" to all registered users.) Time Limit - A number from 0 to 255 determining how many minutes a user is allowed to remain online (See "Overtime Logoffs"). A time limit of 255 means the system won't log the user off at all. Edit user - Use this both to change an existing record in some way and to validate a new, pre-registered user. The prompt "Find Name?" will find the FIRST occurrance of the string entered; naturally, since duplicate names are not recognized, if you enter the whole name then the only entry will come up. An example: if you enter "Jones", the first JONES in your file will be found. When using this to validate users, you should adjust their access level (to at least one), their privilege level, and their time limit. Validate users - This shows you all level 0 users, one at a time, and allows you to easily upgrade their access and privilege levels. Do this every few days. Printout Userlog - This will make a hardcopy of your userlog on your printer. Add to DBase - This is for use when physically adding a file to the database (not uploading or changing areas). Use DOS to place the file in the appropriate DBase directory, then use this option to let the system "see" it. Edit DBase - This edits database entries. Among other things, it is used to move a file from one database area to another; for instance, to move a file from an Upload Only area to a Download area. See DBase - Prints to the screen a list of all filenames recognized by the system. Caller Synopsis - Shows the last 15 callers, times and dates, and (for SYSOP level or console usage) number of uploads, downloads, and messages read. Review DayFile - This allows you to view the board's activity over a period of time. Everything a user does online of any importance is put into this file with a time and date stamp. The location of the DayFile is determined by the board's configuration. Assigning more than one board's DayFile device to the same device will cause the files to be combined. Selecting this option will display the contents of the DayFile on the screen. This can be done by a SYSOP from online, using BACKSTAGE. (See "Reset DayFile" below) Reset DayFile - This in effect copies the DayFile to another file called DF in the DayFile device, and resets the DayFile to an empty file. You need to do this occasionally to keep the DayFile from getting too large. You can then do what you like with DF; delete it, print it, etc. If you do this often, you won't have to delete it, as each time you choose DayFile->DF, the old DF file is deleted for you. Vote Reset - For use when a VOTE is finished. Re-enables the VOTE function for ALL registered users. Note that it does NOT delete the contents of the Answers directory (see "VOTE"). Special features --- - Lockouts - A person may be barred from using the board at all by entering him as a user with the password BANNED, or if already a user, changing his password to BANNED. When this user calls and enters his name, the environment textfile "BannedUser" is transmitted and the user is immediately disconnected. - "Urgent" Messages - You can direct a textfile directly to a certain person immediately after he/she logs on. Construct a textfile in the TEXT directory called "Firstname Lastname.urg" with the person's name inserted. When they call, they will see this file immediately after logon. This turns out to be an extremely handy device. - Overtime and Timeout Logoffs - If a user has been on past his time limit, he is informed of this and automatically logged off. Exceptions are if the user is actively up or downloading, or is entering a message, or is in CHAT. In these cases he is logged off when the condition is no longer active. If a user is inactive for a period of approximately two minutes, he is warned of an imminent disconnection. If another minute goes by without activity, he is automatically logged off. INTERACTION These commands are meaningful only when used while a caller is actually online. It is the only one of the three main menu bar choices that will function online. Disconnect - Disconnects a caller immediately and recycles. Use this instead of, for example, simply pulling the phone plug out of the modem. Break In - Temporarily interrupts whatever the caller was doing and enters CHAT mode. When CHAT is over (see "Chat" for details) returns to the point at which the user was interrupted. DO NOT use this while a user is down- or up-loading! Disable/Enable Chat - Determines whether CHAT will work for anyone. If disabled, CHAT will say "Sorry, SYSOP not available", no matter who is requesting a CHAT. If enabled, users whose privilege levels allow a CHAT request can ask for a CHAT. (See "Chat".) Break In always works, however. This choice appears in two menus, so it can be chosen when on or offline. Temporary Changes - Allows the SYSOP to, for the current call only, raise or lower a user's access level, privilege level and/or time limit. These are not changed in the user's Userlog Record. This is handy if a user needs more time to perform a file transfer, etc. Do not raise the user to SYSOP level or sparks will fly. Screen Toggle - Turns the screen on and off while a user is online. This concludes the section on offline commands. Many of these can be used remotely from the BACKSTAGE function by a level 250 or above SYSOP-level user. ONLINE FUNCTIONS Environment Files Text files called Environment Files are used extensively throughout the system for various purposes. Without exception, all of these can be rewritten by the local SYSOP. They are all located in the TEXT subdirectory, along with the text files from the actual TextFile function area. (Two exceptions: HELP and MENU textfiles are in the HELP directory.) General Rules - The textfiles can be created from the DOS ED editor or from any word processor with the ability to store text as a "straight" ASCII file with no control characters. There is no limit on the length. Lines can be of any length, since the system will reformat them for the user's screen width. The only other requirement is that paragraphs must end with the "|" symbol (shifted backslash). If this symbol is not present, the system will run your paragraphs together in screens shorter than 80 columns. Environmental files must have the EXACT names listed below and must be in that sub-board's TEXT subdirectory, or the system will not recognize them. Any of these files can simply be left out and the system will pass over them. Welcome - This is the very first thing that appears after the user hits RETURN. All users see this file, and all get linefeeds from each line, to ensure that it can be read. For this reason it is suggested that you not use this file for character graphics. Logon is better for this purpose. NewUser - Seen by unregistered callers as soon as they are recognized as such and asked for linefeed and screen width information. Logon - This is one of the few files that is NOT affected by the user's screen width setting. This is so that any character graphics or text arrangements will appear as intended. This file is seen by those with screen widths of 80 or higher. A different file, NLogon (Narrow-screen Logon), is seen by those with narrower screens. This allows you to have an attractive welcome for all users. MustRead - This file is seen by all users and CANNOT be aborted by hitting A. This is the place to put text that you want all users to be certain to see. MembersOnly - As the name implies, this can be seen only by access level 1 or higher. SigOpsOnly - Can be seen only by access level 200 or higher. All of the above appear BEFORE the first COMMAND: prompt. The remaining Environment Files appear in specific places: Menu - Appears when user enters a question mark at the main COMMAND: prompt. Like the Logon, this is unaffected by screen width. Also like the Logon it is seen only by 80 column and above users; another file, NMenu, is for smaller screens. (It is recommended that you design NLogon and NMenu for 40-column screens.) SysopsOnly - Appears when a level 250 or higher user enters the BACKSTAGE area. Registration - Appears to new users after they request to register and before the registration questions. Database - Appears when any user enters the DATABASE area of the board. This file is kept in the appropriate database directory of the primary database device, allowing you to have a different message for each database disk set. This is convenient if you rotate your database; the file can identify which set is active automatically. Logoff - Appears when call is terminated. TEXTFILES The format of textbase files is exactly the same as that of environment files. Textbase file names as they appear in the TEXT disk directory all have the same format: the word TEXT, the directory number, a dash, and the filenumber (no spaces). For instance, file 4 in textbase directory 3 appears in the disk directory as "TEXT3-4". The only special files in this regard are the HELP files. Directory 10 is reserved for these, and several filenumbers within the HELP directory are reserved for certain functions: TEXT10-18 must always be for Message Entry HELP, TEXT10-19 must always be for Message Reading HELP, and TEXT10-20 must always be for Database HELP. This is so that by entering a question mark at these points, the appropriate HELP file can be immediately displayed. You can rewrite these as you wish. They are stored in the Help directory, so that duplication is not necessary for the other 3 boards. Entering HELP at the main COMMAND: prompt gives the user his choice of all the HELP files available. The HELP textfiles are stored in the HELP directory, along with the menu files. As mentioned before, ALL textfiles (including Environment Files) except for Optional-1 can be stopped with S, aborted with A, and restarted with any other key. THE COMMAND PARSER The command parser, as mentioned above, understands a very wide variety of commands. The way it works is simple. Inside the program is a table of synonyms, arranged carefully in terms of priority. The command line parser searches for synonyms and reduces the sentence entered to a series of single-letter commands, with parameters if supplied. The board then acts on these reduced commands. Simple as the system is, it is remarkably good at understanding English. Think of it as a kind of text adventure game. The command entered can include parameters; for instance, "Read forward from 30 to 70" will enter forward BROWSE mode, starting at message 30 and ending at 70. Of course, the experienced user need not enter this verbose phrase; "R 30 70" does exactly the same thing (see "Expert Mode"). The only special rule to keep in mind is related to string parameters. For instance, if you use the command "Locate letters to Michael", the word Michael must be enclosed in quotes. Otherwise the system will accept numeric parameters separated by spaces or any non-alphanumeric character (slashes, etc.). This system combines the best of both worlds. It ensures that new users will not become frustrated and will be able to use the board immediately; at the same time it preserves the convenience of single-letter command entry. It also means the system is not bogged down with an endless series of menus. Using non-specific commands, such as "READ" or "DATABASE", will take you to those areas and show you your options at that point. In this way menus are displayed only if really needed. The COMMAND: prompt is always preceded by the number of minutes the user has been online. Actually, the TEXTBASE, DATABASE and MESSAGES command groups are sub-menus when used by themselves. When called this way, you stay in that submenu until you choose to abort. Otherwise the function is performed directly and then you are returned to the COMMAND prompt. Like this: Say you enter DATABASE. You see the choices and choose BROWSE. You are shown the desired database and then returned to this point where you then browse another database. Finally you choose DOWNLOAD from this submenu and get a file, then another. Finally, when finished, you hit RETURN by itself at the submenu prompt and are dumped back to the main menu COMMAND: prompt. That's one way of downloading files. The other is to say specifically "DOWNLOAD" at the main COMMAND: prompt. (You can include the filename in quotes.) When this type of a download call is finished, you are returned to the MAIN COMMAND: prompt, not the DATABASE submenu. Analagous conditions exist for the TEXTBASE and MESSAGES groups of commands. Each of these submenus has a specific HELP file, as mentioned elsewhere. THE MESSAGE BASE ICONOCLAST utilizes a very powerful messaging system. It can be used as an ordinary non-segmented message base, or a specific conference can be chosen and followed exclusively. Message Entry - Messages can be sent by any level 1 or higher user to any other, in any conference. Unregistered users can send only one type of message: private ones to the SYSOP. The system allows messages addressed to "ALL" or "ALL " plus other words; it does not allow messages to unregistered users. Persons entering a message are asked what conference and subtopic they want it assigned to. This question can be answered with either words or numbers. Messages are entered continuously; they should not be entered with a carriage return at the end of each line. Message lines will feed to the writer automatically. Up to 20 lines of 80 characters can be in a single message. Terminate message entry with a carriage return on a blank line. At this point the user has several options. A menu appears with the following choices: Save - Save the message as public mail. Private Save - Save the message as private. SigOps and SYSOPS can see these. Hidden Save - Save the message so that only users with the sender's exact access level can read it. This allows up to 255 private discussions to take place. Again, SigOps and SYSOPS can still see these. List - Show the message with line numbers. Restart - Begin the message again from line 1. Quit - Abandon message entirely. You are first asked if you are certain that's what you want to do. Edit - Edit a line of the message. Choose a line (you can List from within this command), enter the wrong word and the right one. If the string to be replaced appears more than once, you are informed and asked to enter a longer search string. Continue - Continue message entry on the next available line. ? Help - Entering ? at this point shows you TextFile 10-18. Dead Messages If a user is somehow disconnected while entering a message, the message is saved in a special file. The next time the user calls, the message is revived and instead of going to the COMMAND prompt, the user is replaced in Message Entry mode to finish the message. Reading Messages Messages are marked in several different ways. When a message is sent to a user, that user's file is altered to show how many current messages are directly addressed to him. If the message is a reply to another message, the fact is noted in the message header; also, the number of the first reply is noted in the header of the original message. If an addressee has read a message, the word "RCVD" will appear in the header. Messages can be read in many different ways. There are several global commands that work across all conferences; New shows all messages entered since last logon, Browse includes both forward and reverse message reading (depending on whether the ending number is smaller or greater than the starting number), and Personal finds all new mail directed to the user. Specific locates messages by number. Locate is a global message search and locates all occurances of the search string within the header AND body of a message. Entering ? for Help displays Textfile 10-19. The reading field can be narrowed with the Conference option. You can choose to follow one specific conference and subtopic through the message base. After a message is shown, a string of commands appears on the screen, depending on the type of message and whether it has replies. You can Delete a message if it is to or from you, or if your access is 200 or higher. You can Reply if you are authorized to send messages. If you reply to a message, the header is used to address your message and you are placed immediately into message entry mode. From this point the reply works exactly like sending a regular message, except that when finished you are returned to reading more mail instead of to the COMMAND: prompt. If a message has been replied to, you may choose to read All Replies or to follow the thread beginning with that message. The difference between the two is important. All Replies shows you every message that is a direct response to the message in question. Follow Thread traces down the line of replies beginning at that message. For instance, let's say you are using Browse to read forward from message 10 to message 100. While doing so, you decide to read All Replies to message 20. Let's say this shows you messages 30, 35, and 40, at which point you decide to use the Follow Thread option. This shows you the first response to 40, let's say 45; then you see the first response to 45, then the first response to that, etc., until you either run out of responses or enter Q at some point to quit this mode. At that point you are dropped back into All Reply mode to finish reading the replies to message 20. Entering Q or finishing these replies drops you back into Browse mode at message 21. However, now Browse will not show you the messages you've already seen. If you wanted to see them again, you would have to exit message reading entirely and re-enter it. The message reading mode is always shown at the top of the screen so you always know where you are. Note that All Replies and Follow Thread are not recursive; that is, you can not read all replies to 30 while you are reading all replies to 20. One more feature, mentioned elsewhere, is that each of the 255 access levels is capable of having its own private discussion area that only members of that particular level can access. This is done by using the Hidden Save option when saving messages. When this is done, only members at the same access level can see the messages. These areas are called "rooms". When reading a letter you have written previously (or, for the SYSOP, ALL letters), you have the option to edit the letter, even though it's already been sent. This is for people like me who change their minds and erase letters. The combination of these features makes for a very powerful message base. With judicious configuration on the part of the operator, almost any conceivable use can be implemented. CHAT MODE Chat mode is entered in one of two ways; either by a request on the part of the user, or by using the Break In command from the pulldown menus. If a caller requests a CHAT, pressing any key at the console engages CHAT mode. CHAT automatically formats for the user's screen width. If the SYSOP does not respond within 30 seconds or so, CHAT is disabled for that call and a flag line appears in the Information window, letting the SYSOP know a CHAT has been requested, so that he can use Break In if desired. CHAT has several special features. First of all, to exit CHAT, press F1. To buffer-capture the CHAT in a disk file called CHATCAPTURE, press F2. (CHATCAPTURE appears in the TEXT subdirectory.) To transmit an ASCII textfile while in CHAT. press F3. And for every SYSOP who has ever been driven insane by slow typists with nothing to say, there's an added feature; while in CHAT the system beeps if RETURN is pressed, allowing you to do something else while a long-winded, nontypist user is typing, then return when you hear the beep. You will thank me for this one. THE DATABASE The database uses standard XMODEM protocol, the most common and widely-used protocol. Any terminal equipped with XMODEM (NOT Xmodem CRC) should upload and download smoothly to an ICONOCLAST system. This is the fastest XMODEM routine I have ever seen. Many operations of the database have already been covered. The remaining ones are outlined below. Uploading - Any user authorized to use the database and with a high enough access to use a database directory set for uploads can upload to the system. The user is asked for an up-to-80 character description and an up-to-80 character "keystring". This keystring is used with the Locate function to find specific programs or types of programs within the database. It is simply a list of words that individually describe and categorize the program. Downloading - Any user authorized to use the database and with a sufficiently high access to use a database directory set for downloads can download a file from the directories he has access to. Browse - The user is asked to choose a database (a list is available) and is then shown a listing of the files in that database, including filenames, who it was uploaded by, the file length, and the description line. Locate - This searches through the filenames and keystrings for matches. For instance, suppose a terminal program has the keystring "STARTERM AMIGA XMODEM UTILITY TERMINAL". Entering "Term" at the LOCATE prompt will find this file as a match and display it, along with all other matches. Note that this is an easy way to address a specific file to a specific person; simply put that person's name in the keystring and let him know. VOTING The system provides for two different kinds of voting: Questionnaire and Ballot. Both use an operator-written text file called Ballot for their questions; each can have up to 20 questions. The file should be written in the form of questions, with cues for where answers should be inputted. The cues to be included in the file for questions are simple. For a textstring or a yes-or-no answer, simply conclude the question with a question mark. If a numerical answer is required, use a colon (:). You must not use these characters elsewhere in your file. Doing so will throw off the voting function. The type of vote is chosen from the Board config menu prompt. For questionnaires, each individual's responses are stored in a file named with the user's logon name, in a directory called Answers. The SYSOP can read any user's reply from the VOTING prompt by entering their name. A list of respondents is also available at this point. A ballot is quite different. Each individual's responses remain anonymous and are totaled with everyone else's. Note that the questions will have to be chosen to be meaningful when tabulated in this way. Any user can see the result of the voting as it progresses from the VOTE command, but in both Questionnaire and Ballot mode, users can place votes only ONCE. Of course, only one of the two options can be active at one time. Other commands Several other commands exist that do not deal with the message, text or database, or with the VOTE function. All are entered at the main prompt. They are: Userlog - or several other synonyms and phrases, shows all active members and their computer types. Callers - or several synonyms, ("Who was on last", etc.,) shows a list of the last 15 callers and the dates and times. For level 200 and above, shows messages read and number of up or downloads. Help - Shows the entire directory of Textbase area 10 and allows reading from it. This is actually a submenu, in that the user stays here until through reading files. Linefeeds - Toggles LINEFEEDS on and off. Duplex - Toggles the board between full and half duplex. This command and LINEFEEDS have no alternate form and must be entered exactly. Doors - or BBS or Jump, or several other synonyms, allows user to go to one of the other active BBS sub-boards if all conditions are satisfied. Backstage This command, also accessed with Settings or Register or Password or several other synonyms, does different things depending on the user's access level. For level 0 users, this sends the environment file Registration and activates the online registration sequence, if enabled. For levels 1 - 249, this shows the caller's user record and allows changes to some parts of it. For SYSOP level users, this is where remote board upkeep takes place. You can access many of the userlog and database functions available from the pulldown menus remotely from this command. It also allows you to drop to DOS to perform DOS-level maintenance. Needless to say, this ability requires rigid security on your part not to let your password fall into the wrong hands. (You can disable DROP TO DOS by not leaving any active CLI's open.) You can also review the DayFile remotely from here, so you can see exactly what is going on while you're not there. , You may not immediately see any uses for this, but in effect it allows you to run the entire board remotely. Even things that have no specific REMOTE commands, like changing a textfile and the accompanying text name list, can be accomplished. All you do is prepare the new file using another copy of ICONOCLAST, upload it and the textfile to the database, and go to DOS to copy them over and rename them. You can put utility programs like the file-repair routines found on ICONOCLAST HQ in your root directory and run them from afar, assuming they require no input. There is a program on ICONOCLAST HQ that allows you to send an unmissable message, with alarms, to someone at the terminal's location; good for an urgent message to an assistant SYSOP or a wife, etc. Others are welcome to invent their own utilities. Are you beginning to see what we mean about the versatility of this system? Expert Command Mode In addition to the sentence parser, most commands may be entered as single letters at the main COMMAND prompt. It is not necessary to "toggle" EXPERT mode on or off; the parser responds to either type of command automatically. Following are the abbreviations: R or M - Go to Message Base submenu. E - Enter a message. E Sysop - Enter a message to SYSOP. U - Upload. Goes directly to upload module. D - Download. Goes directly to download module. N - New mail. Read globally from high message read last call. B - Browse. Can use parameters (see below). P - Read new personal mail. S - Read a specific message by number (see below). T - Go to TextFile submenu and remain there. Q - Show all validated members & computer types. X - Go to Xmodem Database submenu and remain there. C - Join a conference. Y - Request CHAT. L - Locate. Global search message or database. H - Help. Displays HELP directory & allows browsing. G - Goodbye (logoff). K - Kill a message. Z - Backstage, registration, or user presets. O - Display last 15 callers. J - Jump to another sub-board, logging off present one. V - Vote, or see how voting is progressing. Some of the above can be combined with text or numerical parameters. A space, slash, or other non-alphanumeric character should separate commands and parameters. For instance: B 10 50 - Browse forward from message 10 to 50. L X "Terms" - Locate matches for "TERMS" in the database. L M "Bill Doe" - Finds messages to or from Bill Doe. NOTE that string parameters MUST be enclosed in double quotes! K 35 - Kill message 35. S 100 or simply 100 - Read only message 100. D "Starterm" - Download the file "STARTERM" from the database. T 3 5 or T 3-5 etc. - Read textfile 5 in text directory 3. It is suggested that you keep a list of these abbreviations somewhere in your HELP files for your more advanced users. A complete set of standard HELP files is available on ICONOCLAST HQ. Directory Organization The user disk is divided into subdirectories for convenience and utility. Only one file is in the main directory, called "Board". This contains information identifying board names and which is the default sub-board. Then there are four main directories, called BBS1, BBS2, BBS3, and BBS4. Each contains ALL the files needed to run that entire sub-board. Within each main directory are several subdirectories, called Text, Dbase, and Answers, plus many other files needed for the BBS system's normal operation. (Internal file organization details are available for those who need them on ICONOCLAST HQ.) In the Text directory goes every textfile of any description; Ballot, Textbase files, and Environment files. The Dbase directory contains, as you might guess, all the files in the database. If another drive is being used for these, it, too, must have this same path organization; that is, each Dbase directory must be contained within an appropriate BBS directory, even if Dbase is the only thing on that drive. Answers contains any responses to questionnaires. These are not automatically wiped out when VOTE is reset; you should do this from DOS at the same time you write the new Ballot file. It is possible to do a complete coldstart reset of any of the four sub-boards without disturbing the others. To do this, boot the program and press C when the initial screen comes up. After a few seconds you will be asked which BBS to coldstart. Needless to say, you must use extreme caution in using this function! It performs a real, absolute coldstart, from which you will have to reconfigure everything in that sub-board. A final note about disks: It cannot be urged strongly enough to backup your user disk daily. Since you can wipe out up to 4 complete BBS systems with a bad disk, backups are essential! If a file is damaged for some reason or another, it is far simpler to just use your backup than to attempt to dissect and fix the file. There are a few other features I've forgotten, and a couple of surprises. I hope you put the board to good and completely legal use. I would love to see this board become a standard for Amiga boards. Again, registered users are entitled to download updates and get instant help from the home ICONOCLAST system, ICONOCLAST HQ, at 915-833-3899. Now that you know what it does, don't you think $25 is a small price to ask? You're right, it is. Send more. A NOTE TO BUDDING SYSOPS Many who use ICONOCLAST will be experienced operators of other BBS systems; others will have never run one and are suddenly and rightfully excited by the prospect of running their own BBS. This is included for those who are now inspired to start up their first board. Many people have no idea what they're getting into when they do this. Don't get me wrong; it's a lot of fun, very rewarding, and easy to do, and we need more Amiga BBS's around. But there are a couple of pitfalls, and it wouldn't be fair not to tell you about them. First, your legal responsibilities: You must run a clean board as far as the law goes, or you as SYSOP are liable for anything that might happen. If you can't police the board yourself, assign a trusted assistant SYSOP or SIGOPS to help. There are many cases on record of confiscated computer systems, etc., when a SYSOP wasn't careful and an illegal message containing credit card numbers, etc., was posted on his system. In this same vein, resist the temptation to offer commercial material for downloading. Besides it being a pretty sluglike thing to do, several software companies have lately come down hard on several boards for this kind of activity. It's a cheap way to get callers and it's not worth the possible loss of your entire system. Don't be surprised or angry when noone calls your board for a long time. If you expect to have a dozen calls a day from the time you set up shop, you are going to be disappointed, unless yours is a unique situation. You must offer something unique that makes people want to frequent your board, especially if there's a lot of competition. You must be prepared to sit it out for months until you develop a userbase. Ask other SYSOPS or local compilers of BBS lists to include you in their lists, but don't be offended if they ask how long you've been online. Far too many people put up a board for a few weeks, get tired of it, and are never heard from again. Also, boards that are not open 24 hours can become a real pain for the user, and also to you. Users won't call because they've forgotten the hours, or else you will be bombarded with calls on your home line at the wrong hours, and long after you've either given up or gotten a second line for the board. Remember, these numbers get circulated throughout the country. (I made this mistake myself, years ago, and STILL get modem calls on my home line. A word to the wise!) Lastly, when advertising your board on someone else's board, be polite and brief. Don't harass members of other boards into calling yours or yell at them because they won't. Don't allow "wars" on your board. Something about the immediate nature of BBS systems brings out the worst in some people. Your board will quickly go to pot and your users will get disgusted and look elsewhere if you allow a few loudmouthed individuals to ruin things for everyone else. Allow freedom of speech, but noone says you have to tolerate everything from anyone. The best SYSOPS are seldom heard from. Don't use the board as your personal soapbox. Be RELIABLE. If you take the board down for a few minutes, take the phone off the hook. People get confused when the board just doesn't answer. CONCLUSION The final version of this board will have many more features. Among other things, it will be capable of networking with other systems in a FIDO-like array. It will probably support multiple serial ports so that you can use up to 4 boards at once (Amiga 2000 version only). It will of course run at 2400 baud and will be compiled. This version is released in this way to get a few more Amiga BBS's going and get people interested in the final version. It will also be easier to implement a network when a group of boards is already assembled. And yes, I could use the money... As stated before: - This system may be distributed in any manner that does not cost more than the media; PD compilations and user group libraries that sell for more than the cost of a blank disk can obtain a license to distribute this package by inquiring through the ICONOCLAST HQ board. - The entire contents of this archive must remain intact, with no changes in any files. The exception to this is that new modem files may be added, under the name of the modem. - CVI Software retains ownership of the software. This system is NOT in the public domain. - No warranty or guarantee is expressed or implied, and all liability and responsibility for use of this system and results thereof, damages, or suitability for a particular application lies with the user of the software. - Long live the AMIGA. Michael Cox ICONOCLAST HQ Sysop Reach through: ICONOCLAST HQ BBS (915)833-3899 - 24 hrs (NOTE: Enhancements in the system will almost certainly have been made by the time you receive this. Full text updates will be included in the archive.)