TAG-BBS v1.03 Introduction TAG-BBS is an online message and file handling system written by Patrick E. Hughes specially for the Amiga personal computer. This manual describes the installation and operation of the software. Speaking generically, a Bulletin Board System (BBS) is nothing more than a program that organizes a series of notes to make them easier to read. Specifically, TAG-BBS is this and much much more. Not only are messages neatly organized and maintained by TAG-BBS, but people may send private mail and access files for transfer and reading. In addition, each of these abilities is protected with a flexible security. This is a Share-Ware program. This implies that you may make As Many Copies As Desired and are Encouraged To Pass It Around to as many people as possible (including electronically..). This also implies that I wrote it entirely in my own time and received precious little help getting it done. If you use TAG-BBS regularly or in a serious (business, profit) fashion I request that you send in a contribution to aid further development to the program and its utilities. Send the suggested $25.00 dollar contribution to: Sands and Cie. attn: Patrick E. Hughes 419 N. Larchmont, Suite #128 Los Angeles, CA 90004 Check or money order payable to Patrick E. Hughes So much for the hype and explanations, now comes the list of features available with TAG-BBS. You will find this list handy for comparisons with other software: o Messages may be separated into an unlimited number of bases, or "sub-boards" as they are usually called. Each has it's own security, and each may be of a different size. o Files are much the same as messages, the only limitation being the amount of disk space available. You may use as many subdirectories as you want, and each has it's own security. At present Xmodem-Checksum and Xmodem-CRC are supported protocols, and the software automatically responds to the caller's settings. o Security is flexible and based on the individual account rather than the entire system. o Automatic support for all modems via their result codes. All serial I/O routines have been optimised and are fully buffered for top speed, this includes protocol transfers too, where the increases really show. o Sysop is given as much power as is practical. Increase and decrease time limits instantly, edit accounts quickly online, force instant logoff, control of I/O streams (serial in/out, screen & keyboard on/off), send all output to printer and disk file (singly or simultaneously). o TAG-BBS was designed with two criterion in mind, speed and reliability. Using efficient programming techniques has resulted in both a system unburdened by unrealistic limits and one ideally suited for a multi-tasking system. The software was written and tested fully on an Amiga system, and verified on a fully expanded hardware setup, not ported from some other brand of computer.. o Multi-tasking is not hampered! You can do whatever you like since TAG runs as a separate process by design, and follows all programming guidelines; assuming memory is available for the other tasks, naturally. Hardware Requirements Amiga Personal Computer: 512K RAM recommended 1 disk drive (2nd drive heavily recommended) Modem (must support DTR pin, almost all do..) (can use from keyboard alone for testing) Hardware Supported All extra memory improves performance and sizes allowed All AmigaDOS compatible hard drives of any capacity All printers. Used for online "hard copy" Configuring Your System Run the CLI command: STACK 10000 (20000 to be safe) Defining your system means filling in a set of text files with the required information, nothing more nothing less. You can use any standard text editor for this purpose: Ed, MicroEmacs, vi; all come to mind. The files involved in this are called: Tag_System, Tag_Boards, Tag_Bulletins, and Tag_Libraries. To make things easier for you, I also include blanks all ready to be filled in and heavily annotated examples to show you how it's done; these files are named exactly as above, but have ".blank" and ".example" endings. Tag_System Contains all the pertinent information on the system itself, the default securities for accounts, modem control strings, and the very small mail definition. Tag_Boards Location, size, and security of the message bases on your system. Tag_Bulletins Each bulletin is a text file, which can be read by anyone who has the appropriate security. Each may be located anywhere, on any disk as long as it is described here. Tag_Libraries As with the message bases, each library defines a separate subdirectory. Other than that, your only worry is what security each section deserves to worry about. A WALK-THROUGH First you should go through the example files and using their guidelines fill in the blanks to define a system configuration. I leave the details of this step up to the Tag_xxx.Example files and you. After you finish filling out the Tag_xxxx files, copy them into the S: directory of your WorkBench disk. AmigaDOS uses the S: directory for its startup files, and so does TAG-BBS. I do this for two reasons: one being that no matter what directory TAG-BBS is run from it can always find its configuration, the second being that TAG-BBS can be run from anywhere, there is no need to change directories or have a 'root directory' to deal with. All sections must be in a SEPARATE directory. Next you must create all the directories that your configuration requires. The only thing to worry about here is that you get all the names spelled correctly, and that each section must be in a SEPARATE directory. The next to last step in the walk-through, making all the data files required. Run the Generate utility and watch it go through its gyrations. If there will be any problems running what you wrote into the configuration files Generate will abort and let you know where it couldn't continue. Using this information will allow you to rewrite your configuration and try again. If there are any errors that you can't figure out pay close attention to the amount of disk space left. TAG-BBS creates all the data files needed in their full size; you can never run out of disk space (file libraries notwithstanding) with TAG-BBS, and Generate will not let you use a configuration too large for the amount of disk storage available. At last, the final step! After all is written and data files generated "Run TAG-BBS". You'll see the windows open, and you'll see it waiting for a caller. By typing in "A" followed by [return] you activate the account editor. Edit account #1, which is the Sysop by default, and set all information. You'll need to make a name, password, and change all security levels to 255. Don't forget to validate yourself as sysop! Voila, vous etes finis. SECURITY NUMBERS Security is separate for each major section of TAG-BBS, Messages Libraries, Bulletins, and Status. I'll discuss each of these in turn to make matters clear. Sec_Status: This is the major security you need to know. There are several default values, all of which mean very special things. = 0 Guest. A first time caller, 0 is the suggested value. = 1 New. Just after Joining the board, 1 is suggested. = 2 Valid. Set when you edit accounts and Validate. The above are set from your Tag_System file, and represent standard values as defined in the system. It is entirely possible for you to give New accounts full powers and give everyone Sysop status immediately.. >= 100 BoardOp. Can do the message base functions D>elete, +>Lock, and ->Unlock to the bases they can visit as determined by Sec_Board. A sort of controlled power most useful for delegating maintenance. >= 150 LibOp. Allows the library directory operations R>emove on accessible directories. Another semi-powerful maintenance delegation feature. = 255 Sysop. Anyone with 255 Sec_Status can do all sysop functions. This includes message base E>xtract, MainMenu E>dit-Accounts, and Private Mail $>Read and D>elete. The most powerful online capabilities available. All the other securities are set from 0..255 and are independent of status. Therefore a BoardOp can not delete messages from a base which is inaccessible because their Sec_Board security won't let them visit. One further note, except in the Bulletins, if a section is restricted due to security a person will not even see it listed. FILES ON YOUR DISK TAG-BBS : The program itself, this is what you run. Generate : Utility to generate your system once it is described in the configure files. xxx.Help : Example help menus displayed at various times which show available commands and what they do. xxx.Text : Files read out for specific events, such as a guest joining the board; these provide information and help customize the look of your board. Tag_xxx.Example : Demonstration configure files to help show a working system, should help you get set up Tag_xxx.Blank : Templates to fill in. These are the files you copy into the S: directory of the WorkBench disk to get things going. Do not use comments as are shown in the .Example files, they are only there to explain what is represented. Tag.Stat : Created automatically when you first run the program. May be deleted if a new First Day Online is wished, perhaps after you are finished with tests and officially open your doors for business. CALCULATING SPACE REQUIRED When running, TAG occupies both disk space and RAM. This dual nature is the reason for the speed which surpasses all other Amiga bulletin board programs and some terminal packages as well. Designing a system that pushes the limits would be trial and error if I were negligent and didn't tell you how to calculate the space required without actually generating the data files. Accounts: Disk = 386x RAM = 0 Messages: Disk = (136+2500)x RAM = 136x + 136 Libraries: Disk = 216x + File_Sizes (an unknown) RAM = 216x + 215 Mail: Disk = (136+2500)x RAM = 136x + 136 Bulletins: Disk = Text_Sizes (an unknown) RAM = 188x As an example, consider the following small setup- 20 Accounts (a very private system) 1 Message Base @ 20 messages (full of illiterate people) 1 Library Directory @ 10 files (who like to download a lot of pictures) 20 Letters (and use mail for text pictures) 10 Bulletins (They need a lot of online help pictures) Accounts: Disk = 386 * 20 (7720 bytes) RAM = 0 (0 bytes) Messages: Disk = 2636 * 20 (52720 bytes) RAM = (136 * 20) + 136 (2856 bytes) Libraries: Disk = 216 * 10 (2160 bytes) RAM = (216 * 10) + 215 (2375 bytes) Mail: Disk = 2636 * 20 (52720 bytes) RAM = (136 * 20) + 136 (2856 bytes) Bulletins: Disk = unknown RAM = 188 * 10 (1880 bytes) Altogether: 115,310 bytes of disk storage, and 9,949 bytes RAM when running. COMMANDS AVAILABLE Awaiting Logon: followed by a RETURN-- A> Account editor $> Sysop immediate logon 'space'> Local normal logon 0> Exit to CLI ?> Show Options Main Menu: A>ccount, shows pertinent information (all may use except Guest) B>ulletins, text files for reading (governed by Sec_Bulletin) C>hat, page sysop to chat (all may use) E>dit-Accounts, online editing of users' accounts (255 sysop) F>eedback, direct mail to #1 Sysop (all) G>oodbye, logoff (all may use) I>nfo, system information (all) J>oin, become a permanent account, start at New status (only Guest) L>ibrary, directories (Sec_Library) M>essages, bases (Sec_Board) P>rivate-Mail, letters (Sec_Status) T>ime, including remaining for user (all) ?>Help Bulletins: #>number, to read (Sec_Bulletin) L>ist, shows all files available with +- security Q>uit, go to MainMenu ?>Help Libraries: N>ew, visit all directories with new files S>elect, answer Y/N to visit or bypass directories A>ll, go through all directories L>ist, show directories available Q>uit, MainMenu Prompt: C>atalog, show all files numbered sequentially/non-stop D>ownload L>ist, one by one Q>uit, to Libraries above, or next in sequence R>emove, delete (Sec_Status >= 150) U>pload, if done from keyboard will bypass Xmodem and save the file's entry directly Between (during List, or Download) D>ownload Q>uit, to Prompt above R>emove, (Sec_Status >=150) S>tatistics, size and transfer time Messages: N>ew, visit all bases with new messages S>elect, answer Y/N to visit or bypass bases individually A>ll, go through all bases L>ist, show bases available Q>uit, MainMenu Prompt: D>elete, (Sec_Status >=100) I>ndividual, select single numbers N>ew, read new messages since last logoff Q>uit, to Messages above R>ead, select numbered range W>rite, edit a message Between (during reading) A>gain, go back and read it again D>elete, (Sec_Status >=100) E>xtract, save into a separate text file (Sec_Status ==255) L>ast, go backwards by one and read that message N>ext, continue the reading P>rivate-Reply, send a letter to the author Q>uit, to Prompt above R>eply-Regular, write a message in response +>Lock, protect from RollOver (Sec_Status >=100) ->Unlock, allow to RollOver (Sec_Status >=100) During Chat: Ctrl-V> Version number Ctrl-E Ctrl-E> Edit Online User, must be pressed in quick succession Editor: During Text Entry Ctrl-X = Delete the entire current line Ctrl-W = Delete the last word entered Empty Line = Stop text entry, and start edit options At Prompt A>bort and do NOT save the message C>ontinue entering more text D>elete a line E>dit a line already entered F>ree space, report how much space is left to use H>elp, give detailed help on the editor L>ist all text entered so far R>etype last line entered to make a quick correction S>ave text FUNCTION KEYS F1 = Chat On/Off. Only the local keyboard can enter or leave Chat F2 = Time+10min. Increase temporarily the user's time limit online F3 = Time-10min. Remove 10 minutes temporarily from the user F4 = Force Instant Logoff. Immediately jumps to logoff TAG allows you to control all the I/O streams, which can be a very useful power. There are input and output options, and all choices will be displayed in the Status Pane F5 = Keyboard Input on/off. In case you don't want any accidental key-presses to affect the online user. F6 = Serial Input on/off. This is the most powerful function, since you can instantly make the online user unable to enter input! Especially handy for taking them for a walk around the system, or in Chat when you want to speak uninterrupted. F7 = File Output on/off. Automatically opens and adds to the end of a file called TRANSCRIPT.TEXT which is kept in the directory indicated by your configure file, Tag_System LOCAT entry. All output will be mirrored into this file until turned off. F8 = Printer Output on/off. Make instant hard-copy through the printer, mirrors all output until turned off. Useful for recording information during Chat, or for keeping a log of some action. F9 = Screen Output on/off. If you don't need to see what's going on with the system, you can turn this off. It will freeze the local screen, but the Status Pane will continue to monitor system activity. Will moderately speed up serial output since it doesn't stop to send to the local screen. F10= Serial Output on/off. If you don't want an online user to see what you're up to, perhaps editing the account during Chat, this is the best. Will not send any output to serial until turned on again. EXPANDED TOPICS MODEM CONTROL TAG-BBS expects certain things of the modem, the example setup string provided handles all the requirements, but I have not made it clear just what is needed. First, and most important, is that the modem should NOT automatically answer the phone. This is unlike any other BBS that I have run across and is a point to be aware of. The modem MUST send result codes, but should NOT echo command sequences. You should use VERBOSE results since they send an extra CR-LF which TAG expects. The EXTENDED result codes must be selected, they correctly show what speed the caller is using and TAG automatically handles any speed from 300 up to 9600 in this way. Disable any "escape code character" to avoid mishaps and false commands going out to your modem. This is a safety precaution. The suggested OPEN: codes for the following are known and personally tested. Hayes 1200: ATE0F1M0Q0V1X1S0=0S2=255S7=20S12=255 USRobotics 2400: ATE0F1M0Q0V1X6S0=0S2=255S7=20S12=255 The "RESET:" code is NOT the same as the modem Reset command. Therefore, do NOT use the ATZ command; instead I suggest ATH0 which ensures the modem is ready for the next caller when it should be. If anyone has successfully used an AVATEX modem with TAG please write me a letter containing your modem settings and all TAG MODEM: control texts. I do not have an Avatex to test on, and people have reported problems with other BBS programs so I want to fix any problems before they happen. Or even better, if someone works for Avatex and wishes to send me an engineering sample I'll make sure that I work out a solution if the problem exists! LIBRARY DIRECTORY TECHNIQUES Once an online (by modem) account uploads a file into a library it is immediately available for others to download, all governed by the securities you've set, of course. Ordinarily this makes things very easy on a sysop since there is no maintenance involved. However, people cannot be trusted sometimes and might upload files you do not want. If you are worried about problems like this I have a solution: Give one directory a very high Download security (255,255) so that only someone with that very high Sec_Library can access it. Set the Upload security to what you want, I'd suggest 0,255 so that even a guest account may send in a file. Then you must copy the file itself into a regular directory and do a "local upload" to make it available to everyone else. MESSAGE BASE TECHNIQUES "One Liners": since old messages will automatically roll over once a base is full to make room for new, you can exploit this fact and create a base where there is only one message. All anyone can read and respond to will be the very last. If you +>Lock that single message so it doesn't roll over you have made a bulletin inside the message base that will show up when an account does a N>ew read of all bases. GENERATE AND HOW TO USE IT TAG-BBS needs many disparate files to store data and keep track of the data stored. Since each system has different sizes I can't give you already existing files, so I give you Generate. Once you have set up all your configuration you run Generate. The display shows its progress and any problems that might arise. Generate will not re-create any data files that already exist. Since Generate does not re-create existing files you may add new bases and directories as often as you like, running Generate after each change to the configure files. You do not need to run Generate if you are just making changes to s:Tag_Bulletins. Note that any errors creating a file will cause the generic "Previous KEYS exist" message to appear; if you know that a file should have been created this is a signal : you you should check for errors and correct them. THIS EXAMPLE should only be read by those confident with AmigaDOS and CLI commands. In order to increase the size of an already existing directory or base without destroying all previously existing data you must do as the following example for messages shows: Change the number in s:Tag_Boards to be the difference between the old number of messages and the new. If you HAVE 100 messages and WANT to have 150, the number is 50. change the s:Tag_Boards temporarily by using the above example to 50 cd board-directory rename Board.Data Old.Data rename Board.Keys Old.Keys Generate (and if everything goes well continue, else fix the problem) rename Board.Data New.Data rename Board.Keys New.Keys join Old.Data New.Data AS Board.Data join Old.Keys New.Keys AS Board.Keys change the s:Tag_Boards to the full number you wanted, ie 150 here I told you it was complicated.. TIME LIMITS There are three important pieces of information kept with each account on the system: Time_Last_On, Time_Limit, and Time_Used. Time_Last_On is something you cannot normally change, it is what keeps N>ew readings in order. Limit and Used are the two we are concerned with. Each time a person calls, Time_Last_On is checked and if it is over 12 hrs ago they get the their full Time_Limit and Time_Used is set back to 0. If not, then the time they've already used is subtracted from their limit and if there is any time left they get to the Main Menu. If all their time has been used they are sent the Logon24hrs.Text and disconnected. This 12 hour limit is based on the time they last called, NOT the calendar day. SINGLE DRIVE SYSTEMS Running TAG-BBS on a single drive is possible with a little forethought and careful design. Here I will describe the steps required to make a "Turnkey" disk that, when inserted after turning on the power, will automatically run the board you have created. All steps done in quotes are CLI commands and how to use them. 1: "Format drive df0: name "My_Board" noicons", keep the inner set of quotes. This makes us a very clean disk without even a trashcan to get in our way. 2: "Install My_Board:". The command to make it acceptable as a WorkBench disk. 3: "MakeDir My_Board:devs". 4: "MakeDir My_Board:s". YOU MAY SKIP 5, 6, AND 7 IF NOT USING A PRINTER 5: "MakeDir My_Board:devs/printers". 6: Copy your printer into the devs/printers directory. You need only have YOUR printer, NOT ALL the selections. 7: Copy the file called printer.device into the devs directory. 8: Copy the file 'system-configuration' into the devs directory. 9: Copy the file called serial.device into the devs directory. 10: Copy the CLI command file 'Stack' onto your disk. 11: Copy TAG-BBS itself onto the disk. 12: Copy Generate onto the disk. 13: Put all the Tag_xxx configuration files into the S directory which you created in step 5 above. 14: Edit a file called 'startup-sequence' and put it into the same S directory. Use the following text as a guideline: " Stack 10000 TAG-BBS " 15: MakeDir all the directories you need for the configuration you have written into the Tag_xxx files (which are now in the S directory). 16: Assuming that your configuration contains no faults, run Generate to create all the data needed. Follow any error messages and fix the problems now. 17: "Delete Generate". You may now get rid of Generate since it is only needed to create the data files, not run the board on a day to day basis. 18: Re-boot your system (CTRL-A-A) and insert the My_Board: disk when asked for WorkBench. 19: Follow the rest of the standard sequence, editing account #1 to create the sysop, and so forth. FUNCTION KEY HINTS Though I have previously described the use of the function keys it often helps to show them in actual use. Running AmigaBoard we've come across some interesting side-effects and techniques: To generate a report of all library files available, turn on the Transcript.Text file (F7) and visit each library in turn doing a complete L>ist, or C>atalog for quick summaries. You may also send this directly to printer using the (F8) function key so you get both a text and "hard copy" version without having to print it later. The same technique can be used to generate a report of all active accounts by using the U>ser_Listings command. While not actively watching the board it helps to turn off the screen output (F9). You'll still get Status Pane reports, but the main display will be frozen; this will speed online activities by a small degree. CREATING A "CLOSED" SYSTEM For those of you who wish an exclusive bulletin board, where members can not Join but must be entered manually by the sysop for security reasons, here is a technique: In the Tag_System file, edit the GUEST entries to have a time limit of 0. When someone who does NOT have an account calls in and tries to enter as a Guest they will instantly be read the file "Logon24Hrs.Text" and the connection terminated. You may edit the file to contain a No-Admittance message instead of an overtime message to get the point across. Any members who exceed their limits will also be read this text, so you should tell them about it before that happens.