Viper v2.0 "The complete communications and offline mail system" Complete documentation (c)1992-94 Chris Lautenbach Table of contents Description Section ------------------------------------------------------ Introduction 1.0 Disclaimer, license and copyright information 1.1 A brief description of the QWK standard 1.2 System requirements 1.3 Program capabilities 1.4 Optimization tips 1.5 Conventions used in this manual 1.6 Keyboard/mouse conventions within Viper 1.7 Using Viper with non-standard fonts 1.8 Vipers use of DPMI/EMS/XMS memory 1.9 Running Viper under Microsoft Windows(tm) 1.10 Running Viper under IBM OS/2(tm) 1.11 Getting Started 2.0 Installation 2.1 Navigation made simple 2.2 Configuration 2.3 Filenames and paths 2.3.1 Database 2.3.2 Sorting 2.3.3 Tagline 2.3.4 Quoting 2.3.5 Communications 2.3.6 Compression 2.3.7 Colors 2.3.8 Other 2.3.9 Message 2.3.10 Printer 2.3.11 Creating header/signature files 2.4 Setting up Viper for automated mail transfers 2.5 The Main Menu 3.0 Opening and closing packets 3.1 Reading messages 3.2 Viewing text files 3.3 Viewing/selecting new files 3.4 BBS Management 3.5 Purge folders 3.6 The Conference Menu 4.0 Zoom 4.1 Selecting conferences 4.2 Adding/dropping conferences 4.3 Resetting message pointers 4.4 Write message 4.5 Folder menu 4.6 Searching the entire packet 4.7 Sorting conferences 4.8 Message Header Menu 5.0 Sorting messages 5.1 Read a message 5.2 Toggling flags 5.3 Clearing flags 5.4 Exiting the Message Header Menu 5.5 Reading Messages 6.0 Searching the conference 6.1 Exiting read mode 6.2 Copying messages 6.3 Viewing ANSI/RIP messages 6.4 QuickReading messages 6.5 Forwarding messages 6.6 Replying/Writing 6.7 Options 6.8 Export to file 6.8.1 Viewing 6.8.2 Printing 6.8.3 Adding twits 6.8.4 Adding to a NameList 6.8.5 Clear flags 6.8.6 Shelling to DOS 6.8.7 Deleting replies and folder messages 6.9 Viewing ANSI/RIP messages 6.10 Writing Messages 7.0 Replying to others 7.1 Writing a messsage 7.2 Using Vipers internal editor 7.3 Importing files into the editor 7.4 Doing carbon copies 7.5 Attaching files to messages 7.6 Using folders 8.0 Creating a folder 8.1 Deleting a folder 8.2 Editing a folder 8.3 Purging your folders 8.4 HitLists 9.0 Practical uses for HitLists 9.1 The effect of rejected HitList entries 9.2 NameLists 10.0 Using a NameList 10.1 Communications 11.0 Terminal mode 11.1 Backscroll 11.1.1 Dialing directory 11.1.2 Setting communications parameters 11.1.3 Uploading files 11.1.4 Downloading files 11.1.5 ViperTerm command line parameters 11.2 Pepper, the script language 12.0 Differences between Vanilla Pascal and Pepper 12.1 Supported variable types 12.2 Internal variable reference 12.3 Information variables 12.3.1 Status variables 12.3.2 Internal function/procedure reference 12.4 External programs 13.0 Tagline managers 13.1 Quote enhancers 13.2 RIP Viewers 13.3 Terminals 13.4 Text editors and viewers 13.5 Troubleshooting 14.0 Appendices 15.0 Appendix A: RoseMail/Qmail4 door settings 15.1 Registration and program information 16.0 Contacting the author 16.1 Developer information 16.2 Greetings and salutations 16.3 Registration information 16.4 --- 1.0 - Introduction About two years ago, I decided that reading my mail offline would save me a fair amount of money on certain long distance bulletin boards I called frequently. After two weeks of searching for a decent mailreader with integrated communications, I had come up empty-handed. There were very few that met my requirements, and the couple that did were either buggier than my cottage, or the interface was far too rough on the soul. Being a contract programmer, and always writing programs for other people, I decided to write one for myself. After showing it to a couple of friends, I found that there were many people who wanted the same thing I did. This made me rethink the strategy I was using to write it, and I started over from scratch. This time, I had everyones concerns in mind rather than just my own. Many of the people I had talked to were concerned with the same things I was. I had no wish to waste any sizable portion of the development time on any feature that a small portion of my users would actually use, so I concentrated mainly on the features that were most important. After about three months of coding, I had a program that could be used, and the beta/external development cycle began. For the next year or so, I did nothing but implement features suggested by my beta testers, and debug the program as we went along. The major holdback for a release of Viper has been the documentation, since programmers seldom enjoy writing it -- and most users didn't know enough about the program to do it, either. This summer I made a conscious decision to make Viper a priority; putting much contract work on hold until I could make a release. I truly hope you will appreciate the effort that has gone into producing this software. It represents thousands of hours of work on my part, plus a similar amount on the part of my beta-test team. I've tried to price Viper competetively compared to other products, and eventually it will have many features that were previously only dreamt of. But I need you, the end-user, to make this happen! I am in this thing for the long haul. Viper will not disappear overnight. Consider Viper a program by the users, for the users. If you make a suggestion, and it is in line with the main purpose of the program (communications and e-mail), I will gladly implement it! Naturally though, it is your suggestions and your registrations that will enable this program to flourish. Without support, I will not be able to update Viper as often or as significantly as I would like to. In any case, since Viper is marketed as Shareware, you have the right to use it for up to 45 days for evaluation purposes. After that 45 day period, you are either required to register Viper, or discontinue usage. Registration is extremely fast if you have VISA, since you can just call my support BBS, enter your information, and call back in 24 hours for your key file. 1.1 - Disclaimer, license and copyright information Viper (herein, "the program") is NOT public domain, nor is it free. You are granted a 45 day evaluation period in which to determine whether or not the program suits your needs. If you continue to use the program after this 45 day period you are expected to register it. All Viper program, documentation, and configuration files contained in the distribution archive are copyrighted by the author (Chris M. Lautenbach). The copyright owner hereby grants you the license to: use the software for an evaluation period, make copies and give them to whomever you wish; and distribute the program through electronic means -- providing you include all files contained in the distribution archive. You are not permitted, however, to distribute any key files other than the evaluation key that came with the original package. The author hereby disclaims all warranties relating to the program whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. The author will not be held liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if the author has been advised of the possibility of such damages. In no event shall the author's liability for any damages ever exceed the price paid for the license to use software, regardless of the form of the claim. The person using the software bears all risk as to the quality and performance of the software. ** No copy of this software may be distributed, or given away without ** ** this document or the other files contained in the distribution ** ** archive. In addition, neither the program or manual may be altered ** ** in any way, or reverse-engineered via disassembly or any other ** ** method. ** 1.2 - A brief description of the QWK standard QWK was created by Mark `Sparky' Herring, in 1987. It was derived from the PCBoard(tm) message base format, and is the most widely used format for offline mailreading in use today. There are numerous QWK doors available, for almost every BBS program in existence. The method for doing offline mailreading is quite simple. You call your BBS, open the mail door, and select all the conferences/areas from which you wish to read mail. Then you download a QWK packet, for example, TTC.QWK. Open the packet with Viper, read, make replies, etc. Then close the packet, and a REP file will be generated. Consistent with the above example, the replies would be bundled in a file called TTC.REP. Simply call the BBS back up, and upload the TTC.REP files into the mail door. That's it! Your messages are posted. You didn't have to tie up your phone line for hours reading mail, or waste your time on the BBS. Doesn't that sound nice? QWK packets are basically binary data files that have been compressed with PKZIP, LHarc, ARJ, or practically any other compression program that your mail door will support. !! Note: In order for automated mailruns to work properly, we suggest you make sure your RoseMail/Qmail4 door options are set correctly. See 14.0 for the correct options. 1.3 - System Requirements - A 286, or better, processor - At least 2 megabytes of RAM (no EMS/XMS required) However; if it is present, Viper will use: - Up to 32 megabytes of RAM - A RAM drive - VGA display - A Microsoft compatible mouse 1.4 - Program capabilities - Viper runs in protected mode, utilizing all available DPMI (DOS Protected Mode Interface) memory. This allows you to open large packets, without having to load a memory manager to provide EMS/XMS memory (such as HIMEM, QEMM-386, or EMM386.EXE). (See 1.9 for more information on Viper and it's DPMI memory usage) - Up to 15,000 conferences - Up to 15,000 messages per conference - Up to 15,000 lines per message - Internal editor allows for up to 60,000 characters per message - Directly differentiates between door types including RoseMail, Qmail4, JetMail, Tomcat, QSO, and PCBoard v15.x Internal QWK. - RAMdrive support for your work directory. - Handles both PCBoard and WildCat! color codes, plus ANSI colors - Complete ZIP v2.x (inflate/deflate) and LHarc v2.x compatible internal compression - Supports external use of PKZIP, LHarc, and ARJ as compressors, and automatically uses them depending on packet type. - Supports external editors and file viewers (such as QEdit/LIST) - Supports an external RIP viewer (includes Wayne Thomas's FreeView) - Complete internal message editor, supporting most standard editing commands (eg: WordStar/QEdit command sequences) - Both tagline and quote managers are supported - Supports PCBoard 15.x extended headers for return receipts, subjects, and to/from fields - Complete multiple folder support; copy from conferences to folders; from replies to folders; from folders to replies; etc. - A unique message selection system, called HitLists. - Message forwarding, NameLists, and carbon copies - Fido-style `dogtag' tagline support - Intelligent tagline theft (steals most taglines at the press of a key! :) - Special support for Fido/PostLink/Usenet/Internet mail. Messages from these network/systems are automatically differentiated from normal messages, and thereby handled with specific attention paid to the special features and limitations of said systems. - VGA 50 line mode support, plus support for non-standard line modes like 33 and 66 lines - Full context sensitive help - Complete communications included, with X/Y/Zmodem, full-color backscroll. - PEPPER (script language, an almost 100% Pascal implementation) probably the most advanced script language ever seen in a DOS based communications package. - Communications are an external module and may be run simultaneously under Windows or OS/2 - PIF files to do so are included. - Complete support for COM1: to COM8: including non-standard IRQ's and I/O base settings. - FOSSIL/DigiBoard/INT14 support. - Designed with ease of use in mind, all commands are intuitive, and always visible on the status line. - All sorting is done via a recursive QuickSort, which is VERY fast. - All searching is done with a Boyer-Moore searching algorithm, which again, is VERY fast. 1.5 Optimization Tips To increase the speed at which Viper runs, there are a few simple things you can do. First, use disk caching software such as Norton SpeedCache, Central Point's PC-CACHE, or HyperWare's Hyperdisk. A cache size of about 1 to 2 megabytes will *greatly* improve performance when decompressing QWK packets. Another thing that accelerates the operations once the packet has been decompressed is a RAM drive. A great RAM disk utility is included with MS-DOS since version 5.0, and it is called RAMDRIVE.SYS. Some examples of adding RAMDRIVE.SYS to your CONFIG.SYS file: DEVICE=C:\DOS\RAMDRIVE.SYS 2000 512 256 /A Would give you a two megabyte RAM disk on your last drive letter (if you have only a C: drive, then your D: will now be the RAM disk). 1.6 - Conventions used in this manual Items enclosed in greater-than/less-than signs are keys on the keyboard; for example: corresponds to the Enter key. corresponds to the Insert key on your keypad. Sometimes, you'll see combinations like: which simply means that you should hold down the key and press on your keypad. When speaking about configuration options, there are usually two phrases separated by |'s. Example: Communications|Modem Speaker -- refers to the "Modem Speaker" option which is available on the Communications menu in the configuration. Often, you will see us referring to "dialog boxes". This term is borrowed from GUI (graphical user interface) environments where a window is displayed and the user is prompted for information. Some say this is the way you have a "dialog" with your computer, hence the name. Here's an example of a dialog box: ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Reply ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 1.5-1 ³To ............... MORTON JOLLY°°°°°°°°°°°°° ³ ³Subject .......... COOL NEW MAILREADER°°°°°° ³ An standard ³Private .......... Yes No ³ message info ³Conference ....... 812° I-MAILREADERS (812) ³ dialog box. ³Quote original ... Yes No ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³F1 Help Ctrl-Enter Accept ESC Abort  Next  Previous ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 1.7 - Keyboard/Mouse conventions within Viper In most places you may use the mouse to click on commands which are displayed at the bottom of the screen, and also use the right mouse button as an equivalent to the key. All operations within Viper are abortable by pressing . 1.8 - Using Viper in modes other than 25, 43, or 50 lines If you wish to use Viper in either 43/50 line mode, simply turn on Other Options|Use 43/50 line mode on E/VGA in the configuration. The tricky part is using non-standard VGA fonts like 33 and 66 line mode. It's actually quite simple. Just turn 43/50 line mode support OFF in the configuration, and load the font you wish to use before you load Viper. Easy, isn't it? :) !! Note: Viper will NOT work in video modes where the number of columns is greater than 80. (Some video cards include programs to put the card into modes like 132x43 -- this will NOT work with Viper) 1.9 - Viper's use of DPMI/EMS/XMS memory Viper is a 16-bit protected mode program which accesses memory via the DPMI (DOS Protected Mode Interface). Because of this, Viper has no need for EMS or XMS memory, and does not/cannot use them. There are known incompatibilities with some versions of QuarterDeck's QDPMI utility which has been included with its popular QEMM-386 memory manager for some time. Viper does not need a DPMI host to be present since it has its own. You do not need to load any EMS/XMS drivers (such as QEMM or EMM386.EXE) since Viper has its own memory manager. In some cases (where you have very little memory) it may be advisable to try loading Viper without any memory managers present. Although we state 2mb as the required amount of RAM, it can be run with as little as 1500k -- but there's no guarantee that future versions will run on this amount. Sometimes, you may wish to limit how much memory Viper grabs when it loads. Add this to your MAIL.BAT after installation to limit it: SET DPMIMEM=MAXMEM Example, to limit Viper to 2mb of RAM, use this line: SET DPMIMEM=MAXMEM 2048 In addition, if you are exiting in and out of Viper alot, it may be faster if you load the RTMRES.EXE program included with Viper. This is a memory resident version of the runtime manager used by Viper.. having this constantly loaded will make loading Viper significantly faster. 1.10 - Running Viper under Microsoft Windows(tm) Viper will run quite well in a DOS window under Microsoft Windows 3.1 and 3.11 for Workgroups. There are three PIF's (Program Information File) included in the distribution archive, COMM.PIF, MAILRUN.PIF, and VIPER.PIF. The first will run the communications portion of Viper (don't count on too much reliability when doing background transfers under Windows), the second will perform a mailrun on the currently selected BBS, and the last one will simply run Viper as if you'd run it from the DOS prompt. To install the PIF files; simply bring up File Manager, drag them from the File Manager to a group on the Program Manager desktop. After that, you can use on them to change the icons and what-have-you. If you installed Viper to anywhere other than C:\VIPER, you will need to use the Windows PIF Editor to change the paths. If you installed to C:\VIPER, all should be fine. Windows has it's own built-in memory manager and DPMI host, so when you run Viper under Windows, it will have access to all of your virtual memory as well. So don't be surprised if you see a really whopping figure for free memory on your status line. ;) 1.11 - Running Viper under IBM OS/2(tm) Viper works perfectly with OS/2, even as far as background downloads are concerned. Please note, however, that the following parameters must be set for your OS/2 DOS session: DPMI_MEMORY_LIMIT = 4mb XMS_MEMORY_LIMIT = 0kb EMS_MEMORY_LIMIT = 0kb DOS_FILES = 50 DOS_HIGH, DOS_UMB, and DPMI_DOS_API are enabled On some systems, ViperTerm (GETMAIL.EXE) will report "Cannot open communications port" as an error. If this should happen, then add this line to your MAIL.BAT file: MODE COMx:38400,N,8,1 Where x is the number of the COM: port your modem is on. It is also wise to use an alternate communications driver, such as Ray Gwinn's SIO driver. Also, in the configuration, under "Compression", the option "No I/O Redirection" must be ON. If it is OFF, PKZIP will report that it is out of memory when run. Beats me why. OS/2 also has it's own DPMI host, so you'll see all your OS/2 available memory appearing there. 2.0 - Getting started This section will help you get Viper up and running as quickly and painlessly as possible. 2.1 - Installation Installing Viper is really quite simple, simply decompress the distribution archive to a subdirectory on your hard drive. Now, type INSTALL. You will be asked to which directory you wish to install Viper. Please, do NOT select the directory you are installing FROM. If you wish to view the RIP graphics that may be contained in some messages, then it is suggested you install the accompanying FreeView program by Wayne Thomas. You will be prompted whether or not you wish this feature installed. Including its example files, it takes up a mere 200kb of disk space. Viper will next ask you if you wish it to add a line to your AUTOEXEC.BAT file. It will add your Viper directory to your path, and add a line that tells Viper where to find its files. This line will allow you to start up Viper from anywhere on your hard drive (if you run DOS). After you have done this, press and it will install the program files to the subdirectory you specified. If you are running this from your place of business, and require digits to be dialed before the destination phone number (a number to `get out', eg: 9) then Viper will prompt you for this now. At this point, Viper will attempt to automatically determine which communications (COM:) port your modem is connected to, and its maximum baudrate. Please turn your modem on and off before pressing at this prompt, to reset your modem. (If your modem is an internal model, don't worry about it) After the program is installed, it is always wise to run the SETUP program first, to make sure that all the path, modem, and compression settings are okay. Under most conditions, there is no problem, but there is always the possibility of an error. The installation program also creates a batch file for you to run Viper and it's called MAIL.BAT. Use this batch file to load Viper, unless you've let the INSTALL program modify your AUTOEXEC.BAT. (There are a couple of lines which are needed in AUTOEXEC.BAT, such as putting Viper in your path, and setting the VIPER environment variable) Congratulations, you've now installed Viper! :) 2.2 - Navigation Made Simple Viper attempts to use an intuitive navigation approach that is straight- forward and should be instinctive to computer-familiar users. Using both the keyboard and mouse you can move through Viper with ease after only a couple of hours of familiarizational usage. But to people who are not familiar with standard software navigation procedures, the principles behind them are explained below. Cursor Keys - These are the 4 arrow keys on your keyboard. They are used to move through various selections in the program. In some menus (Main Menu & Message Headers Menu) only the cursor up and cursor down keys are used, while in others (such as the conference menu and reading menu) all 4 arrow keys can be used. Note : When reading actual messages the left and right arrows are used to move to the previous or next message respectively, while the up/down arrows are used to scroll through the message that is currently being displayed. If the current message is under 15 lines then scrolling isn't needed since the entire message is already being displayed. - Can be used in either the message header or conference menus. Allows you to scroll through pages to more quickly find your selection. - The (escape) key is generally used to exit a current menu/option and bring you one level closer to the main menu. - If in a menu, it will usually bring you to the first selection. If in a message or conference listing, the first pressing of the home key brings you to the first selection on your current page. Pressing it a second time will bring you to the first selection on the first page. (If you are already on the first page, it will do nothing more) - Similar to the key but in reverse, i.e. brings you to the last selection on your current page. While pressing it again will bring you to the last selection of the entire list. Mouse - Your left mouse button has two basic usages. That of highlighting a selection and then clicking it again to enter that selection. When viewing a particularly long message, on the bottom right corner of that message a "more" will appear with arrows pointing up/down. You can also use the left mouse button to help scroll through the message, by moving the mouse cursor to the message text separator lines (there are 2, enclosing the top/bottom of the message text) and using the left mouse button to scroll up/down through the text. Note, if the message is shorter than 16 lines then there would be no additional text to scroll. The right mouse button works similarly to the key. It generally exits the current menu/option that you are at. - This puts you into a DOS Shell. This is a standard feature in most programs, but there is no standardized command. Viper uses (while holding down the key you press the key) to execute a shell. From your DOS Shell you can do almost all basic DOS procedures. When you want to return to Viper, you simply type "exit" at the DOS prompt. 2.3 - Configuration Now that Viper is installed on your system, you'll want to customize it to your personal preferences. Go into your Viper directory, and type SETUP. 2.3.1 - Filenames & Paths Under filenames and paths, you may specify which directories Viper will use for storing (and finding) various data. Program Directory - The path where Viper expects to find it's program files (e.g. VIPER.EXE, SETUP.EXE, etc.) Data Directory - this is the path where Viper stores BBS pointer files, your folders and associated data, and several other things. Work Directory - this is a *very* important directory. Viper decompresses your QWK packets to this directory, and cleans it out totally after the packet is closed. If you have a decently sized RAM disk (above 1mb) it is advisable you use it for your work directory. Reply Work Directory - again, another *very* important directory. Viper stores your replies as you write them in this directory. Because of it's contents, it is unadvisable to place this directory on a RAM disk, since a power failure could assist you in losing all your replies. !! Important note: Never store important files in your WORK or REPWORK directories. Both of these directories are erased when you close a packet. In addition, NEVER point these directories at currently existing directories where you store important files (eg: your Viper directory). Path to QWK packets - this is the path where Viper expects to find the QWK packets you wish to read. If you are using Viper's internal communications, then this is also the path where the program will place all downloaded QWK packets. Path to REP packets - this is the path where Viper will store the REP packets it generates for uploading to the BBS. A REP packet is a file which contains your replies and outgoing messages. Download path - this path is used by ViperTerm. If you download files while inside terminal mode, and they are not QWK packets, they will be placed in this directory. Upload path - this path is also used by ViperTerm. This is the default directory that ViperTerm's upload picklist will start out in. Default macros - this is the path to the macrofile that Viper should use by default. Tagline file - this is the path to your tagline file. The taglines are stored in standard ASCII format. Header file - the header file is an ASCII text file, which will be placed *before* your message text on all replies (not on messages written with the Write command). Please see 2.4 for more information on how to create your own custom header/signature files. Signature file - the signature file, like the header file, is a straight ASCII text file, which contains your `signature'. This file will be appended to all outgoing messages, written or replied. Terminal program - this is the program that Viper will execute when you select "Terminal" on the Main Menu|Communications menu. (It defaults to ViperTerm `GETMAIL.EXE /T' but you may use Telix or Qmodem, or whatever you wish. See 13.4 for more information on using external terminal programs.) RIP Viewer - Viper automatically detects RIP command sequences within messages, and if it detects them, you may press to have Viper export the RIP commands and view them with the viewer specified in this configuration option. (If you have specified that FreeView be installed, this is all set up automatically for you) Text Viewer - this option allows you to over-ride Viper's internal text file viewer (which supports ANSI, PCBoard @X?? and WildCat! @XX@ color sequences) with another program, such as V. Buergs LIST program. Text Editor - Viper has a built-in text editor, which is usually sufficient for writing messages. However; if you should need another program, this option will allow you to select it. 2.3.2 - Database options Please note that this release of Viper does not contain what is normally considered a "database" -- these options mostly refer to other database 'type' features such as saving your PTR files and backup copies of replies. Viper allows you to keep backups of most files commonly found in QWK packets, and they are stored in subdirectories of your DATA directory. Use database options - If this option is OFF, then all of the other Database options will be disabled. Save conference lists - this option controls whether or not Viper will save copies of the BBS conference lists. At this point in time, you may as well leave this option OFF, since there is really no use for a saved conference list. (In the next release, this will allow you to write messages without a QWK packet) Save replies in QWK packet - if this option is ON, then Viper will add your replies to the QWK packet from which they were written. When you open that packet at a later date, you'll see a new pseudo-conference named "Old Replies". All of your previously written replies from that packet will be in that pseudo-conference. Save QWK pointer files - most QWK mail doors send `pointer files'. These files contain the numbers of the last message you read in each BBS conference. Should your pointers, at some time, become corrupted, it is a good idea to have this option on, so you can easily upload the pointer file. 2.3.3 - Sorting Options Conferences - you may have the conference list sorted by default. The parameters for the sort are None, Name, Number of Messages, and Number. Basically, the conference list is usually automatically sorted by number when you download it. Messages - when a conference is selected, and the messages are loaded, they are usually loaded in the order they were posted on the BBS. You may wish to sort them by Author, Addressee, Subject, Date/Time Left, message number, or thread. (See 5.1 for more information on sorting messages) 2.3.4 - Tagline Options Use taglines - this option controls whether or not Viper attaches a tagline to the messages you write. If it is OFF, messages will look like they were written on the BBS. (In the unregistered version, this option is always ON) Fido-style taglines - also known as `dog-tags', these type of taglines are automatically used on Fido-based networks and on Usenet. However, you may wish to use them all the time. Set this option to ON to have `dog-tags' as the default. Random taglines - if this option is ON, Viper will automatically pick the taglines for you randomly. If OFF, Viper will display a list of the taglines and let you pick one. Tagline hook - this option provides you with the flexibility to have an external `tagline manager' program assist you in the picking of taglines. See 13.1 for more information on external tagline programs. 2.3.5 - Quoting options Quote prefix - these are the characters that Viper inserts before lines that are quoted when you are writing a message. If you place the letter "F" or "L" in the prefix, they will be translated to the authors first or last initial, respectively. Example: FL> would equate to JS> if the persons name was John Smith. SmartQuoting - when this option is ON, Viper will not `double quote' messages. In other words, if a line in the original message is already a quote, it will not have *another* quote in front of it. In addition, Viper will attempt to make the quotes look slightly nicer. Viewer wordwrap column - when you are reading messages, if a line in the message is more than a certain number of columns long, it is automatically `wrapped' to the next line. Editor wordwrap column - this is the column at which Viper's internal editor will `wordwrap' text. (When you are typing on a line, and the word exceeds this column, that word will be moved to the next line automatically.) Note that this is just a default and can be temporarily changed while editing by pressing . Quote hook - there are some `quote enhancing' programs out there, which put fancy boxes around your quotes. You may `connect' these programs to Viper through the Quote hook. For example, Tagline eXpress provides enhanced quoting facilities, here's how you `connect' it: \TLX\TLX.EXE Q \TLX @MSGFILE@ 2.3.6 - Communications options Normally, you will not need to change these options unless you have installed a new modem, since they were properly configured when you installed Viper. Default interface - this is the method with which ViperTerm communicates. Normally, you will not need to change it from it's default, which is UART (normal COM: port). If you are running a multi-line BBS, however, and wish to run Viper from a DESQview window under a FOSSIL driver, select FOSSIL. The FOSSIL interface has been tested with X00.SYS, and seems to operate effectively. The options INT14 and DigiBoard are implemented, but as yet are untested and may not function correctly. Default baudrate - the default speed at which you wish your modem initialized for terminal sessions. (Values range from 300 to 115,200bps) COM Port - the communications port to which your modem is connected. Viper supports COM Ports one through eight. (Values range from 1 to 8) Parity, Databits, and Stopbits - usually you won't need to change these options since most BBS's use No Parity, 8 databits and 1 stop bit. (Older systems, and UNIX systems may use Even Parity, and 7 databits). Initialization string - this is the string that ViperTerm will send to your modem to set it up. This is done each time you do a Mailrun, or a Terminal session. Tone dial - if your phone line does not have touch-tone service, set this option to OFF. Ignore DCD - if you have a wierd modem, or a faulty modem cable; that is one that does not provide a CD (carrier-detect) line, turn this option ON. Rather than using the CD line to detect when you are connected, Viper will instead watch for the "CONNECT" string. Certain things, like the on-line timer, will not operate correctly without CD, but at least it'll get you running till you can solve your problem. Quiet mode - when this option is ON, you will not see what is going on during a scripted mailrun. Modem speaker - controls whether or not you hear your modem dialing/connecting. This is set by default to OFF. Sound - if this is set to ON, you will hear the exploding window sounds, and connect/download complete sounds. If OFF, *no* sound will be heard, even system beeps from the remote BBS will be translated and displayed as "" on the screen. INT10 Backscroll - if ViperTerm's backscroll does not operate correctly on your computer, then try setting this option to OFF. On certain slower computers, it may be advisable to turn this OFF as well. Dial wait time - this is the amount of time (measured in seconds) that ViperTerm will wait for a connection. Maximum redials - the maximum number of times Viper will try to connect to a BBS before giving up. Set this to 0 for infinite attempts. Confirm Exit/Hangup - when this option is ON, ViperTerm will always ask you whether you are sure when you press or . 2.3.7 - Compression Options Internal ZIP - Viper can decompress QWK packets created with any version of PKZIP internally (including Shrink, Implode, and Deflate methods). If you are low on memory, or would rather not shell to PKUNZIP, set this to ON. Internal LZH - Viper can also decompress QWK packets created with any version of Yoshi's LHarc program. No I/O Redirection - normally, Viper hides the activities of the external compression programs (like PKZIP, ARJ, and LHA). However, under OS/2 this can cause problems. It is defaulted to ON, if you run OS/2 turn it OFF. Path to PKZIP, PKUNZIP, ARJ, and LHA - these are the paths to your compression programs. If they are in your path, then they were set up automatically when you INSTALLed Viper. Maximum renames - this is the maximum number of QWK and REP packets that Viper will keep for each BBS from which you receive mail. 2.3.8 - Colors From this sub-menu you can change all of the colors that Viper and ViperTerm use. Viper disables blinking on VGA displays by default, so rather than having blinking attributes, you will have 16 background colors. 2.3.9 - Other options This is a catch-all sub-menu which contains all the options that didn't really fit into any of the above categories. Use HitLists - this option determines whether or not Viper will check your HitList entries when indexing the packet. See 9.0 for more details on HitLists. Internal communications - if you aren't using Viper's internal communications for mailruns, then set this option to OFF. Basically, when you are using internal communications, Viper renames packets for you. If you use something else for mailruns, then this option will let Viper know that it should prompt you for renaming information. Load only conferences with mail - fairly obvious. When you are on a BBS that has many conferences, it may be advantageous to load only the conferences which actually have mail in them. (This feature is only available in the registered version.) Security mode - If security mode is ON, then your password will be hidden when you are editing BBS entries in BBS Management. Create Index files - if you are using HitLists, then you must have this option set to ON. Use 43/50 lines on EGA/VGA - if you have an EGA video adapter installed in your system, you can display up to 43 lines of text, and up to 50 lines with a VGA adapter. Please NOTE; if you wish to use a custom font/line mode, then make sure this option is OFF, or Viper will go into 43 or 50 line mode. (Two custom fonts are included with Viper, NICE33.COM - a 33 line font, and 66LINE.COM, which is a 66 line mode) Default mailrun parameters - See 11.2 for more information on ViperTerm's command line parameters. 2.3.10 - Message Options Display header during edit - when ON, Viper will display the original message header while you are replying to a message. ANSI delay - when you are viewing an ANSI message, this option allows you to specify the amount of time that Viper will pause between characters. The time is specified in milliseconds. (If you set this to 0, there will be no delay whatsoever.) QuickRead Delay - this option specifies the amount of time (in milliseconds) that Viper will pause between messages while QuickReading. See 6.5 for more information on this option. Expand tabs - when Viper encounters a hard tab in a message, if this option is set to a number greater than 0, it will be expanded to that number of spaces. Maximum lines per message - due to the faulty nature of some mail products in use today, you may need to limit the number of lines in your outgoing messages. Usually, you can send up to a few hundred lines per message, no problem, but in some cases you may need to limit yourself to 99 lines. Viper has no internal limit to the number of lines you can have per message. If the message you have written has more lines than specified in this option, Viper will automatically split it up into multiple message(s). Auto-join next conference - when ON, and you come to the last message in a conference, and press a key that advances to the next message, Viper will automatically switch to the next conference with mail and continue reading there. Block long headers - by default, Viper supports PCBoard v15.x's long TO, FROM, and SUBJECT fields for packets created by PCBoard itself, RoseMail and Qmail4. However, if your BBS uses old versions of RoseMail or Qmail4, you may wish to block Viper from letting you enter more than 25 characters of TO or SUBJECT information, (since older RoseMail's and Qmail's will just insert that extended information into your message text). Strip RE's - many mailreaders place a `RE:' before the subject when a reply has been made. When you are sorting messages by Subject or Thread, these `RE:'s can cause the sort order to be incorrect. Set this option to ON, and Viper will automatically remove the RE: field from the message subjects. High ASCII stripping - Viper automatically strips high ASCII from Internet/Usenet and Fido messages. If this option is set to OFF, Viper will never strip high ASCII. Strip Internet Headers - most Internet-sourced messages (eg. email, news, etc) contain what is known as an RFC-822 message header. This is alot of text that describes the message. Often this text can consume the entire first page of the text window, making reading more of a task. Turn this option ON to have Viper automatically remove these RFC-822 headers. Beep on personal messages - when this option is ON, Viper will beep whenever you come across a message addressed to you, (except in the Personal Conference, since that would quite a nuisance). Ask for edit headers on copy - if set to ON, then Viper will ask you if you want to edit message headers when you are copying messages, (unless you are bulk copying, in which case it automatically doesn't ask you). 2.3.11 - Printer options Formfeed after each message - if this option is ON, Viper will only print one message per page (it will send a formfeed after each message). Default LPT port - this is the port number to which your printer is attached. 2.4 - Creating header/signature files Many people like to have a "header" and "signature" appended to their messages. Viper supports both files, and they can be set in Paths|Header file, and Paths|Signature file. To edit them, simply go into the configuration, highlight one of the options, and press to edit the file. It is important to remember that the header file is used only on messages written with the eply function, since they are usually used to display "Quoting JOE SHMOE to BILL SMITH about BLEAH-BLEAH" type things. You can embed the following codes within your header and signature files, and they will be translated when your message is written to the Replies pseudo-conference: curbbsid ; Current BBS's BBSID confnum ; Current conference number confname ; Current conference name msgnum ; Current Msg: number msgfrom ; Current Msg: From msgto ; Current Msg: To msgsubj ; Current Msg: Subject msgdate ; Current Msg: Date msgtime ; Current Msg: Time msgstatus ; Current Msg: Status msgrefnum ; Current Msg: Reference number msgconf ; Current Msg: Conference Number msgfold ; Current Msg: Folder name (if any) msgfile ; Current Msg: name of text file (e.g. CURRENT.MSG) fulldate ; Calendar: Full expanded date date ; Calendar: Today's date time ; Calendar: Current time addressee ; Packet: Name of user the current packet is for sysop ; Packet: SysOp's name pgmpath ; Viper: program path datapath ; Viper: data path workpath ; Viper: work path repwork ; Viper: REP work path qwkpath ; Viper: path to QWK packets reppath ; Viper: path to REP packets zippath ; Viper: path to PKZIP unzippath ; Viper: path to PKUNZIP arjpath ; Viper: path to ARJ lharcpath ; Viper: path to LHarc When embedding these codes in your header/signature, always preface and suffix them with @ signs, and make sure the code is in uppercase as shown below. Example signature: Chris... viper@can.net @FULLDATE@ Would translate to: Chris... viper@can.net Tuesday, July 19th, 1994 If the date were what it is above, of course. :) 2.5 - Setting up Viper for automated mail transfers It is important to remember that at this point in time, Viper only includes scripts for use with PCBoard/RoseMail, PCBoard/Qmail4, and PCBoard v15.x internal QWK. In addition, if your SysOp has altered his PCBoard prompts considerably, the included scripts may not work at all. Here are 5 simple steps to get you up and running with mail transfers: 1. Create an entry for the BBS you wish to call under BBS Management. See 3.5 for more information on this topic. 2. Make sure that you have EXPERT mode turned on in BOTH PCBoard, and Qmail4/RoseMail. 3. Make sure your RoseMail/Qmail4 settings are correct. The correct settings are shown in Appendix A (15.1). It would probably be a good idea to select some conferences for downloading while you are there. Also, make sure your download protocol is set to ZMODEM, since the included scripts are setup for Zmodem only. 4. Set all your communication settings correctly (baud rate, com port, etc) 5. Select Communications|Mail Transfer! That should be all you need to do! 3.0 - The Main Menu The Main Menu is the one that is displayed when you first run Viper. Most of Viper's major features are controlled/activated from this point. Section Description ÕÍÍÍ Main Menu ÍÍ͸ ~~~~~~~ ~~~~~~~~~~~ ³ Open packet ³ <- 3.1: Opening/closing a packet ³ Read messages ³ <- 3.2: Reading messages ³ Text ³ <- 3.3: Viewing text files ³ Files ³ <- 3.4: Viewing/selecting new files ³ Communications ³ <- 11.0: Communications/doing a mailrun ³ BBS Management ³ <- 3.5: BBS Management ³ Purge Folders ³ <- 3.6: Purging folders ³ HitLists ³ <- 9.0: HitLists ³ NameLists ³ <- 10.0: NameLists ³ Configuration ³ <- 2.2: Configuration ³ Exit to DOS ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 3.1 - Opening/closing packets QWK packets are displayed in alphabetical order. Simply select the packet you wish to open, hit , and Viper will automatically decompress your message packet. Viper will then display the name of the BBS, number of conferences, messages, personal messages, outgoing messages, and type of mail interface. 3.2 - Reading messages Once you have opened up a packet which contains messages, the `Read Messages' option on the Main Menu will light up. After you select this option, you will be presented with the Conference Menu (chap. 4). The Conference Menu displays all the conferences included in the QWK packet (which vary depending on your mail door configuration). The various commands associated with this menu are discussed in detail in section 4.0. All you need to know for now, is that you can use the arrow keys to move the selection bar around and that pressing will select the currently highlighted conference. Once you have selected a conference that contains mail, Viper will load the `header information' for each message in the conference. It will be displayed to you on what we call the `Message Header Menu' (chap. 5). Basically, the number, author, addressee and subject of each message will be displayed on this menu. You may use the arrow keys to highlight a particular message to read, and then press to start reading. The other two functions supported on the Message Header Menu, are Sort and Tag. Pressing will bring up the Sort menu, which prompts you whether you wish to sort the messages in this conference by author, addressee, subject, number, date/time left, tag status, or thread. Pressing "T" will tag the currently highlighted message. This is useful for exporting large numbers of messages, or for tagging topics of interest on the header menu, and then reading only those messages. When you use the Sort function with the Tag option, all messages that have been tagged will be moved to the top of the list. 3.3 - Viewing text files Certain mail doors and BBS programs provide you with extra information in the QWK packet, in the form of news, bulletins, and welcome/goodbye screens. Any files of this type that have been included in your QWK packet will be available for viewing from this menu. 3.4 - Files (Viewing/selecting new files) Most mail doors provide a new files listing in the QWK packet, called NEWFILES.DAT. Viper can display this file to you, and on systems running PCBoard and RoseMail, you can optionally flag files for download on your next mailrun. In the future, Viper will support this option on more systems. 3.5 - BBS Management Naturally, Viper requires certain information about each BBS you transfer mail with. Under BBS Management, you are able to tell Viper about which BBS's you communicate with. When you select MailRun from the Communications sub-menu, Viper will perform that mailrun on the currently selected BBS. To select your current BBS, you first bring up the BBS Management menu, then use the cursor keys to highlight a BBS - then, press to select it. When an entry is selected, a small checkmark will appear beside it. When you initially select this option, Viper will display a list of BBS's that you have on file. Their respective names, phone numbers, and baud rates will be displayed. Once you have selected an entry using the arrow keys on your keypad, you may: add a new entry by pressing ; delete an entry from the list by pressing ; or edit an existing entry press . ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍBBS ManagementÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure ³BBS packet ID .... TTC ³ 3.5-1 ³Name ............. Toronto Twilight Communications ³ ³Script ........... PCBOARDR ³ BBS Mgmt ³Phone number ..... 416-663-7010 ³ dialog ³Baud rate ........ 300 1200 2400 4800 9600 19200 38400 57600... ³ box ³Block long hdrs .. Yes No ³ ³User name ........ Chris Lautenbach ³ ³Password ......... þþþþþþþþ ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³F1 Help ESC Abort Ctrl-Enter Save Alt-F10 Shell to DOS ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; When editing or adding a new entry, a BBS Management dialog box will appear (this dialog is shown in Figure 3.5-1). The following fields will be displayed: BBS Packet ID - this is the name of the packet that you download from your BBS. For example, if your packets are called CRS.QWK, then your Packet ID is CRS. Name - this is the full name of the BBS. Script - the name of the script you are using for this system. You need only enter the name of the file, not the .SCR extension. Optionally, you may edit the script file itself by pressing at this prompt. Three scripts are included with Viper, these are PCBOARDR.SCR (for PCBoard and RoseMail), PCBOARDQ.SCR (PCBoard with Qmail4) and PCBOARD.SCR (for PCBoard v15.x using Internal QWK). Phone number - this is the full number of the bulletin board system. For example, if it is long distance, include the 1 and the area code (e.g. 1-416- 663-1103). Baud rate - the communications rate you wish your modem set at when calling this system. Block long hdrs - Viper supports PCBoard v15.x extended message headers (long TO, FROM, and SUBJECT fields). However; some BBS's and doors may not be so up to date. When this option is set to YES, then Viper will force you to use standard 25 character QWK fields. As of this writing, the latest versions of Qmail4, RoseMail v2.50 and above, and PCBoard v15.x internal QWK all support extended headers -- make sure your BBS is using the latest version of these doors before you use these. Viper will not let you use long headers on BBS/doors which do not support them. User name - this is the name you use on this BBS. Please enter it exactly as it would appear on the BBS's name prompt. Password - this is your password on the BBS. If Security mode is set to ON in the configuration, your password will be hidden behind little blocks. Once you have finished entering the required information, you may then press to save the entry to disk. If you have decided you no longer wish to make these changes/additions, simply press and answer NO when it asks you if you wish to save. 3.6 - Purging folders (To find out how to create and delete folders, please see section 8.0) When you are using folders to store messages, occasionally you will find the need to decrease the size of your message holdings. After you have marked the folder messages you no longer need as deleted, you may select Purge Folders, and all the messages you have marked will be removed from their respective folders. (To see more on marking folder messages as deleted please see 6.9) 4.0 - The Conference Menu 4.1 - Zoom If there are under a certain number of conferences, the conference menu will not take up the whole screen, but rather only a small section in the middle. Should you wish it to take up the whole screen no matter what, press to "zoom" it. 4.2 - Selecting conferences When you open a packet you are presented with the conferences in that packet. Also, there are conferences that Viper creates internally (pseudo-conferences) for use during that session: Personal, Search, Replies, HitLists, and Old Replies. Just highlight the one you want, hit and you will be shown the headers of the messages in that conference (See 5.0 for more on the Message Headers Menu). Below is a list of the pseudo-conferences that Viper creates in the Conferences menu in addition to the list of conferences from the host bbs system. Personal: messages addressed to you, gathered from all conferences that have mail. MUCH easier than searching through ALL conferences for your mail! Search: when you hit , you can enter criteria that Viper will search for in the text of all messages contained in the packet. All these messages will be placed here. Replies: any messages you reply to, or messages you write, will be placed in this conference; current outgoing messages. HitLists: (See 9.0 for information on HitLists) Old Replies: if you re-open a packet containing replies, they are shown here. However, any NEW replies you write during this session will be placed in the Replies section. 4.3 - Adding/dropping conferences , Adding is used to select a new conference from the remote system. This means messages from this conference will start being sent at your next mail run. Dropping deselects a conference so that conference's mail will no longer be sent to you in future mail runs. Adding/dropping only affects reading messages, you can still write to a conference even if it hasn't been selected. From the conference menu use the cursor keys & page-up/page down keys to reach the conference you wish to add or drop. When the conference you want to change is highlighted, press "A" for Add or "D" for Drop. When adding a new conference you will be prompted for how many messages you wish to receive. This refers to the remote system message pointers. If you select "ALL" it will send you all the messages the remote system has in that conference, no matter how old. If you select "0" it would mean to only send you new messages from then on. It wouldn't send any messages that have already been posted to the remote system. Dropping is a bit more simple. After pressing D over the highlighted conference your mail reader will notify the remote system to stop sending mail from that specified conference. 4.4 - Resetting message pointers This option is used to move your message pointers forward or backward. A message pointer is basically the number of the last message you read in a specific conference. Highlight the conference you wish this action to be executed on and then hit . You will be prompted for how many messages you wish to receive with 0 as the default. It will reset your pointer moving backwards from the newest message on the remote system. Meaning if you entered 0 it would only send you messages that were posted AFTER your next mail run. So you would not get any messages during your next mail run, but from then on would receive all new messages in that conference. Setting it to i.e. 100, would mean it would send you the most recent 100 messages posted in that conference and from then on any new messages posted. Warning, after adding or dropping a conference the mail reader will "write" a message in that conference. Do not delete or modify this message. It contains the QWK commands that will be sent to your remote system notifying it of your changes. Warning, you can not use the reset command on any pseudo-conferences such as folders, replies, searches, personal, etc.. Since these pseudo-conferences are internal to your system alone and are not located on the remote system. 4.5 - Writing You can select to write a message directly from the Conference menu. Do this by moving toward the conference you wish to write, using the cursor keys to highlight the conference. Then at the highlighted conference you have selected to write to, press . A Write Message dialog will pop up. (For further information about how to write a message please see 7.0) 4.6 Folder menu See 8.0 for a complete description on how to use the Folder Menu. 4.7 - Searching the entire packet This command will search your entire mail packet, i.e. ALL the conferences that you have selected. It differs from the search command that can be found while reading messages, which does conference-pecific searches instead of global searches. From the conference menu, press F2. You will then be queried for the phrase you wish to search for. It will also ask if you wish the search to be case sensitive, meaning whether or not capitalization should matter. Example: If searching for "rick", is case sensitive it would not return a match with "RICK" since the capitalization of the search phrase and this example phrase differs. But if it is not case sensitive, there would be a match since it would be ignoring capitalization differences. After the search is completed it will tell you how many matches were found. The matches are then placed into your special Search pseudo-conference (which can be found near the beginning of your conference list). If there are already messages in the search conference it will first query you if you wish these messages cleared, or if you wish the new matches to be simply superimposed over the old messages already in your search conference. After the search has successfully reached completion, simply highlight the Search pseudo-conference, and press to read it as you would any other normal conference. You could then sort your search's messages, do further sub-searches, or any other feature that you could normally do in a real message conference. 4.8 - Sorting Conferences This is the command as shown on the bottom of your screen in the Conferences menu. It is used to sort your listing of conferences by a choice of 3 criteria. Name: Sorts your list of conferences by alphabetical order, A to Z. Messages: Sorts your list of conferences by descending order of number of messages. Number: This is the default sorting pattern that is used upon opening your packet. It sorts the list of conferences by their conference numbers which are set on the host BBS system. 5.0 - Message Header Menu The Message Header Menu is the first menu you see after pressing on the Conference Menu to read a conference. Basically, it displays the "header" information from each message in the conference. The header information consists of the FROM, TO, SUBJECT, and message number fields of each message. From here, you can either press to immediately start reading at the first message, or you may use the cursor keys to highlight a specific message to read, then press . !! Note: Most of these commands assume you've selected a message using the cursor keys. :) 5.1 - Sorting Messages It is often easier to read messages if they are in a particular order. The sort feature makes this possible. When you press , the Sort Menu appears. You are able to sort by the following fields: Author (the person who wrote the message) Addressee (the person to which the message is addressed) Subject (the subject line of the message) Date/time (the date and time the message was posted) Flag status (whether or not the message is flagged) Number (usually puts the messages back into their original order) Thread (sorts by subject, and then date/time within subject, to more truly reflect the original order in which the messages were posted) The two sorts which really require more explanation are Flag status, and Thread. The ability to flag messages within a conference yields many gains. For example, you can skim the headers, and flag the messages you wish to read, then sort them by flag. The flagged messages automatically go to the top of the list. In addition, searching works this way as well. Thread sorting is a little more complicated. On bulletin boards which have netmailed conferences (e.g., many BBS's across the world participating) the message numbers may not reflect the true order in which the messages were posted, since it takes time for them to travel around the world. With thread sorting, messages are sorted by subject, and then date and time within subject. This puts them into an order which most closely resembles the original posting order. 5.2 - Read Pressing selects a message for reading. For more information, see 6.0. 5.3 - Toggle Flag Highlight a message using the cursor keys, and press . An arrow character will appear beside the message you toggled. You can toggle messages while on the Message Header Menu if you wish to do a custom sort. !! Note: When you press on the Message Headers menu to return to the Conference menu, all flags will be lost. 5.4 - Clear Flags Pressing clears all the flags from all the messages that are currently loaded into memory. 5.5 - Exiting the Message Header Menu Pressing brings you back to the Conference Menu. (See 4.0 for more information on the Conference Menu) 6.0 - Reading Messages Reading messages is obviously the heart of any mailreader, and here is where you will find most of Viper's more robust features. The message reading screen looks something like this: ----------------------------------------------------------------------------- Msg # .... 1 Ref # .... Left at .. 07-13-94 @ 17:36 From ..... CHRIS LAUTENBACH To ....... ALL Subject .. Test message Status ... Public, unread Conf ..... ONLINE_GAMES (4) 1 out of 1 messages ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Welcome to Viper! :) Chris... viper@planet.org Wednesday, July 13th, 1994 ... "Beta Testers Who Lie!" On the next Geraldo ___ Viper v2.0 [eval] ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ F1 Help F2 Search Esc Headers Copy View QuickRead Forward Delete Reply Write Options Steal tagline Toggle tag Edit  Next  Previous ----------------------------------------------------------------------------- The top line shows the message number, reference number, and date/time of posting. Following that is the FROM, TO, and SUBJECT lines. Status is somewhat of a misnomer since many BBS's that use QWK do not really support this field. Finally "Conf" specifies in which conference the message currently being read was written. From time to time, you will see additional status information displayed on either the top or bottom message separator bars. The bottom one usually displays the following optional information: Fido - this indicates the displayed message was written on a Fido-based system/network. PostLink - indicates the displayed message was written on a PostLink-based system/network (only RelayNet/RIME uses this, as far as I know). Internet - indicates the displayed message was written/transferred via either Usenet or Internet, (basically that it's an Internet RFC-822 or greater compliant message). Receipt - indicates the message is a return receipt. Attach - indicates a file attachment and size of said file. ANSI - Viper has determined there are embedded ANSI sequences within the message. Press to view it in ANSI-mation. RIP - Viper has found valid RIP sequences embedded within the message. Press to view the message with your selected RIP viewer. Almost all commands available to you are displayed on the status line (the highlighted line at the bottom of the screen). Like other status lines, you may use your mouse to click on the commands rather than just pressing the corresponding key. The following keys are used for navigation: / advances to the next message in the conference, or, if you are reading the last message in a conference, it advances to the next conference. goes to the previous message, or the previous conference if you are reading the first message in the conference. / will jump to the previous/next conference with mail. / scrolls one page at a time through the message. works like a combination of and . Pressing repeatedly will take you through the message, one screen at a time, until you reach the end, at which point you will advance to the next message automatically. / moves to the beginning/end of the current message. joins a new conference. This is rougly equivalent to pressing twice. If you are using the mouse, you may click on the "message separator" bars to scroll up/down through the message. (The bars which separate the message text from the status line/message information.) 6.1 - Search If you should want to find a specific piece of text in the currently selected conference (the one you are reading), simply press . The next step is to enter the text for which you wish to search. Please note: only the actual message text is searched, the header is not. Finally, you'll be asked whether or not you wish the search to be case sensitive or not. Here's an example of both: Search Found Case-sensitive Case-insensitive ------ ----- -------------- ---------------- Apple apple NOT FOUND FOUND Apple Apple FOUND FOUND Viper will flag all messages that have text matching your search criteria. After it has finished searching, the messages will be sorted in Flag order, which places all flagged messages at the front of the conference. Lastly, Viper will automatically put you back to the first message. To clear the search out, simply exit the conference, and go back in. 6.2 - (exit back to message headers Menu) Pressing brings you back to the Message Headers menu. It keeps your present message order intact (e.g., any sorts, searches, flags, etc.. will be preserved in the message headers list). 6.3 - Copy Basically, the copy command allows you to copy a message. You may copy the message to any of your global folders, or those specific to the current BBS. In addition, messages may also be copied to the Replies pseudo-conference (your .REP packet). Be careful when copying messages to the Replies pseudo-conference, since most BBS's will reject mail that is not FROM you -- so make sure you only copy messages you have written to Replies. (Actually some BBS's support aliases by simply allowing you to upload messages written by any name. This can be very confusing to other users, should you upload old messages... :) 6.4 - View This option is provided for messages which may contain embedded ANSI or RIPscrip graphics sequences. Viper will automatically detect the presence of these sequences, and you may press at any time to display the message in that mode. (Note: If you did not permit Viper to install the FreeView RIP graphics viewer during your installation, and have not set up an alternate RIP viewer, then RIP graphics will not be available.) 6.5 - QuickRead QuickRead is one of Viper's more unique features. Using this feature, you can quickly skim through all the messages in a given packet. The speed at which the messages are displayed is configured via the configuration programs Message Reading|QuickRead Delay option. The messages are scrolled, meaning that you will not miss a single character of any message. The equivalent to QuickReading in manual keystrokes would be to press through every message in the packet. To stop the QuickRead process, simply press any key to stop. !! Note: If Message Options|Auto-Join next conference is not set to ON, then QuickRead will stop reading at the end of the current conference. 6.6 - Forward Every once in a while, you may receive a message which is either incorrectly addressed to you, or you may wish someone else to read it as well. The Forwarding feature of Viper makes this possible. After pressing the key, a standard message information dialog box will appear. Simply change the name in the TO: field to reflect the new recipient of the message. You may send the message in a different conference by simply changing the conference number, and you may also change all the other aspects of the message allowed by the message info dialog box. After you are done, simply press to verify the information, or to abort the forwarding process. You will then be asked whether or not you wish to edit the message text before it is forwarded (this is useful if you wish to append a note to the new recipient letting them know why you forwarded them this message). 6.7 - Reply/Write / This allows you to reply to the message you are currently reading. The To field defaults to the author of the message you are replying to. It queries you for the subject, private flag and conference number. It defaults these 3 fields to the original messages info. It also asks you if you wish to quote the original message, and if you want a Return Receipt generated when the person the message is addressed to reads it. Please note, only PCBoard currently supports the generation of return receipts in QWK. is used to accept the current paramaters you have entered and to proceed to the message text editor where you write your reply. (To find out more about replying/writing messages, see 7.0. For more information on Viper's internal message editor, see 7.3) 6.8 - Options Due to the number of features in Viper, and the restrictions of only having a few lines at the bottom of the screen for reference, certain less-often used features are on the Options menu. This menu may be activated while reading messages by pressing or clicking on the entry on the status line. ÕÍÍÍÍÍOptionsÍÍÍÍ͸ Figure 6.8-1 ³ Export to file ³ ³ View ³ ³ Print ³ ³ Add Twit ³ ³ Add to NameList ³ ³ Clear flags ³ ³ Shell to DOS ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 6.8.1 - Export to file Every once in a while, there are messages that you may wish to save as text files for later viewing/editing/converting/etc. The easiest way to do this is to select Options|Export to file. You will be prompted for the name of the file to export to, and if there are flagged messages, you will be asked if you wish to export them all. 6.8.2 - View This is the same as the View provided on the statusline while reading messages, however this one is not activated automatically, so you can use it when Viper has not detected ANSI/RIP sequences in the message being read. 6.8.3 - Print Many people enjoy printing out messages to post on their corkboards, giving to friends, etc. (Don't ask me what they do with them, I don't do it ;) Simply select Print to print out messages. If you have multiple messages flagged, you can print them all in one pass. 6.8.4 - Add twit Even though Viper does not provide the standard twitlist facilities that most primitive mailreaders do, the same thing can be simulated using HitLists. Add Twit simply provides a "front-end" to the HitList engine. When you select this option, it merely adds a "Reject Message" HitList entry to the BBS-Specific HitList with the author's name in the FROM field. You will also be prompted if you wish to reject messages TO him as well.. :) 6.8.5 - Add to NameList Using this option to add peoples names to NameLists makes things simpler in many ways. Firstly, you don't have to worry about misspelling the person's name, and also, it's easier. You will be prompted to which NameList the person's name should be added. In addition, if the message is a Usenet or Internet sourced message, and Viper can determine the person's real name from his address, then Viper will place the user's real name in the NameList entries "note" field. See 10.0 for more info on NameLists. 6.8.6 - Clear Flags Selecting this does exactly what you think it does, it clears all the flags from the messages in the current conference. 6.8.7 - Shell to DOS Shell to DOS tells Viper to open up a new instance of your command interpreter (COMMAND.COM most of the time, but it should work with 4DOS, or anything that sets the COMSPEC environment variable properly). You may do whatever you normally do while in DOS. You should have at least 500k free memory in your DOS shell thanks to the DPMI runtime manager. 6.9 - Deleting replies and folder messages Pressing while reading a message will cause one of three things to happen: 1. If you are in the "Replies" pseudo-conference, the displayed message will be immediately deleted. You will be returned to the Message Headers menu after the message has been removed. 2. If you are in a folder, the message will be marked as deleted, and will be removed from the folder the next time you select "Purge Folders" from the Main Menu. 3. Nothing at all; if you are in any non-folder/non-replies conference. What's the point? :) 6.10 - Viewing ANSI/RIP messages When Viper detects that there are embedded ANSI/RIP sequences in the currently displayed message, you will see either the word "ANSI" or "RIP" appear on the upper separator bar. When this is present, simply press to view the message in the appropriate mode. Please note that RIP viewing will not work if you didn't let Viper install FreeView. 7.0 Writing Messages Of course, the common mistake of calling programs like Viper a "mailreader" is that the most important thing you can do with it, is of course, writing messages! :) ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Reply ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 7.0-1 ³To ............... MORTON JOLLY°°°°°°°°°°°°° ³ ³Subject .......... GREAT NEW MAILREADER°°°°° ³ Standard ³Private .......... Yes No ³ msg entry ³Conference ....... 812° I-MAILREADERS (812) ³ dialog ³Quote original ... Yes No ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³F1 Help Ctrl-Enter Accept ESC Abort  Next  Previous ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Figure 7.0-1 shows the standard message information dialog box. It is your way to give Viper all the important information about the message you are about to write to someone (or many people). On almost all PCBoard/Qmail4/RoseMail BBS's, this dialog box will be considerably larger, since you can enter up to 60 characters of TO/FROM/SUBJECT information. On all other BBS's, you are limited to 25 characters (as shown above). There are three basic ways of writing messages; 1. Pressing on the Conference Menu, whilst having previously highlighted the conference to which you wish to write a message. 2. Pressing while reading messages. This will write a message to the conference you are currently reading (if it is a conference). Note: You cannot write messages to a folder, the Replies, Search, HitList or Old Replies pseudo-conferences. 3. Pressing while reading messages, will initiate a reply to the message currently being displayed. To: The recipient of the message. The default is "ALL" which is used for a public posting to everyone in that conference. For a direct message to an individual (public or private) enter his/her name in this field. If you press in this field, you can send your message to all people named in a NameList (See section 7.5). Pressing will allow you to pick a single name from a NameList (this is equivalent to an "addressbook" function). Subject: The topic or subject matter of this message. Private: A private message is one which is readable only by the person specified in the TO: field (described above). It is important to remember, however, that most bulletin board systems do not support "truly private" email and that all messages posted on the system are readable by the System Operator. However, other users of the system will not be able to read a private message unless it is addressed to them (they won't even know it's there). Conference: This is the conference number to which the message is posted. When writing messages from the Conference Menu, the conference that was highlighted when you pressed is usually the number displayed in this field. If you were reading messages, and are replying to one, then this number is usually the conference number of the original message you are replying to. It is usually not wise to change the conference number when replying to someone else's message, since they may not be monitoring the conference you are sending it to. Once you have filled in all the appropriate fields and are satisfied with your entries press to start writing the message text. Conversely, should you wish to abandon the reply right now, simply press . ÕÍÍ Editor ÍÍ͸ Figure 7-2 ³ Save ³ ³ Abandon ³ ³ Continue ³ ³ Edit header ³ ³ Attach file ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍ; While editing your message text, you may press at any time to bring up the Editor Menu (see Figure 7-2). Naturally, selecting Save will save the message, and you may be prompted for a tagline depending on how the Taglines portion of the configuration is set up. Abandon cancels the message entry process and dumps the message. 'Continue' allows you to go back to the editor and continue editing the message text. This is useful on occasion when you forget something, press the key by accident, or just want to see some of the original message text that might still be displayed on the screen behind the editor window. Oops! You just realized that you put the wrong name in the TO: field of the message. No problemo, man. Just select "Edit Header" and the message information dialog shown in Figure 7-1 will come up again and you can change any information you want. See 7.6 for more information on how to use the Attach command. 7.1 - Replying to others While reading messages, you may often encounter a message that you wish to reply to. Simply press and fill out out the message information as described in 7.0. 7.2 - Write a message There are two ways to write a message with Viper. The first, is while you are reading messages, you press . The second, is meant for writing messages to conferences you cannot read (because there is no mail in them), and this is done by pressing on the Conference Menu while the conference that is highlighted is the one you wish to write the message to. Again, the rest of the process is as described in 7.0. 7.3 - Using Vipers internal editor Vipers internal text editor is fairly powerful, and will surely do you for most of your messaging needs. If you should wish to use an external editor, such as QEdit, Boxer, or similar, all you have to do is put the name/path of the program in Paths|Text Editor in the configuration. That's it! (Oh, and make sure you do not change the name of the message file while you are editing it, as Viper has no way of determining what the new name is) Here's a brief overview of the editing commands: , Reformat paragraph ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Reformats the current paragraph. If you've changed the margins, then this command is very helpful for making paragraphs fit within them. In addition, if you indent the first line of the paragraph before issuing the reformat command, all following lines will be indented to match the first. , -- moves to the beginning/end of the current line. , -- moves to the top/bottom of the screen. , -- moves one word forward/backward. , -- moves to the top/bottom of the message. , -- turns Insert mode on/off. -- indents the paragraph. -- turns wordwrapping on/off. -- sets the right margin. -- deletes from cursor to the end of the current line. -- deletes the word under the cursor. -- deletes the current line. -- undeletes a line deleted by (up to 150 lines) -- import a file. -- help. , -- exits the editor (optionally saves, you will be prompted). It is important to remember that the internal editor cannot handle messages larger than 64,000 bytes. (This equates to roughly 800 lines of text, *if* each line contained a full 80 characters) 7.4 - Importing files into the editor Importing a file into the editor is very easy. Just follow these three steps: 1. Move the cursor to the line in the message where you wish the file to be inserted. 2. Press . 3. Highlight the file you wish imported, and press . It's that simple! !! Note: Remember the internal editors limit of 64,000 bytes. Do not attemp to import files that are larger than that. 7.5 - Doing carbon copies Since Viper does not perform a 'carbon copy' feature per-se, you use NameLists to perform this task. It's easy, here's how: 1. When you are addressing the message (in the message dialog shown in Figure 7-1) simply press while the cursor is in the TO: field. 2. You will be shown a list of NameLists that are available, highlight the one you want using the arrow keys, and press . That's it. Now a copy of your message will be sent to all of the people whose names are on that list. (See 10.0 for more information on creating or deleting NameLists) 7.6 - Attaching files to messages Attach file is a feature that only works with RoseMail doors thusfar. Simply select "Attach File" on the Editor Menu (see Figure 7-2) and you will then be prompted for the name of the file you wish to attach. !! Important note: you cannot upload messages which have attached files with the Mailrun command off the Main Menu. Unfortunately, the goofy way RoseMail did this requires you to upload your REP file manually, since you will be prompted to upload the appropriate files for attachment at that time. 8.0 - Using folders As an organizational tool, folders are the greatest. They are an easy way to categorize and store messages that you wish to keep. All available folders will be displayed on the Conference menu, in a separate color (configurable, but defaulted to Red). Basically, when you create a folder, you tell Viper two things. 1. The scope of the folder. Folders can be either Global, or BBS-Specific. A Global folder can be read/copied to while reading a packet from any BBS. A BBS-Specific folder however, can only be read or copied to while a packet from the BBS it is specific to is open. 2. The name of the folder. It is wise to give folders meaningful names. For example, a folder you use to store Star Trek related messages, would probably best be called "Star Trek". :) !! Note: You cannot write messages to a folder, nor can you edit messages in a folder, at this time (it will be possible in the future). 8.1 - Creating a folder While on the Conference Menu, press . This will bring up the Folder Menu (see Figure 8.1-1). ÕÍFolder Options͸ Figure 8.1-1 ³ Add ³ The Folder Menu ³ Delete ³ ³ Edit ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Simply highlight Add with the cursor keys, and press . At this point, the Folder Creation dialog will appear (see Figure 8.1-2). ÕÍÍÍÍÍÍÍÍÍÍÍ Add folder ÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 8.1-2 ³ Name: Star Trek ³ Folder Creation ³ Scope: BBS-Specific Global ³ Dialog ³ BBS: TTC ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Simply enter the name of the folder, then press . Use your / arrow-keys to select either BBS-Specific or Global. If you selected Global, enter the BBS ID of the BBS you wish it to be specific to (it will default to the BBS ID of the currently open packet). Once you have entered the necessary data, press . 8.2 - Deleting a folder To delete a folder, go to the Conference Menu, and highlight the folder you wish deleted. Next, press , and highlight the Delete option on the Folder Menu (Figure 8.1-1). It is wise to remember, that if the folder was not empty before you deleted it, that the messages are still on disk. The disk space will not be released until you Purge your folders (See 8.3 - Editing a folder Naturally, the only aspects of a folder you can edit, is the scope, name, and BBS of that folder. Go to the Conference Menu, and highlight the folder you wish to edit, then press . Highlight the Edit option, and press . The Folder edit dialog will appear (it is identical to the one shown in Figure 8.1-1), simply edit the information you wish to change, and press . !! Note: A common mistake when trying to edit/delete folders, is that you haven't highlighted a folder on the Conference Menu. :) 8.4 - Purging your folders After you've flagged folder messages as deleted, or deleted an entire folder, it is always best to purge the folders. This option is available on the Main Menu, and can only be performed when no packet is open. Once activated, Viper will go through all your folders, and remove any unwanted messages. These messages are PERMANENTLY removed, so make sure that you haven't flagged any messages you wanted to keep as "Deleted". 9.0 - HitLists HitLists could be described as an advanced form of the somewhat primitive `twit lists' found in other mailreaders. Viper sports a unique feature, that we call HitLists. These lists allow you to have Viper automatically select or reject messages based on criteria provided by you. HitLists come in two flavors; global and BBS-specific. Global HitLists apply to all packets from all BBS's, and BBS-Specific HitLists apply only to the BBS that they were created for. You may add, delete or edit global HitList entries at any time, however, BBS- specific HitList entries may only be manipulated when you have a packet from that BBS open. To create you Global HitList, just select HitLists|Global HitList. If there are no other entries in the list, a dialog box will be presented which will prompt you for the required information. To create a BBS-specific HitList, open a packet from the BBS you want the list to apply to. Then, select HitLists | BBS HitList. ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍEdit SelectionÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 9-1 ³From ........ °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³To .......... °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³Subject ..... °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³Fragment .... °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³Conference .. °°°°° ³ ³Status ...... Select Reject ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³F1 Help Ctrl-Enter Accept ESC Abort  Next  Previous ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Figure 9-1 shows a the HitList editing dialog box. The following are descriptions of each of the fields. From - you can either put a full name in this field (eg: CHRIS LAUTENBACH) or you can put part of a name (eg: CHRIS). If you only enter part of a name, all messages from anyone with that name (eg: CHRIS would have CHRIS JONES, CHRIS SMITH, BILL CHRIS, etc) will be selected. To - basically, the same as the From field, with the one exception that it applies to the addressee of the message rather than the author. Subject - Like the From and To fields, you may enter only part of a subject. For example, putting the word GUN here, would catch any message that had the word GUN anywhere in it's subject. Fragment - This option is a little more advanced than the three previously mentioned. To put it simply, this option allows you to `pre-search' the text of all the messages in the packet. If you put "garbage" in this field, then all messages with the word "garbage" anywhere in their text would automatically be posted to the HitList conference. Like all other searching functions in Viper, the fragment search uses a Boyer-Moore link table to increase speed. Conference - you can specify `conference locality' by entering a value in this field. This HitList entry will only apply to messages in this conference. This field is fairly useless in a Global HitList entry since conference numbers vary across BBS's, however it's great for limiting searches on a specific BBS. (EG: You want to search for Lotus in the Buy and Sell conference, because you want to buy a copy. If you searched for it globally, you'd get messages with people talking about Lotus, not selling it) Status - and here comes the flexibility parade. With this option, you can tell Viper to either Select or Reject a message based on the pre-defined criteria. (See 9.2 for more on how to use this field) All messages that have been selected via a HitList, will appear on your Conference Menu in the HitList pseudo-conference. !! Important note: Many people make a common mistake when entering their HitList entries. You MUST remember that the effect of the multiple fields in the HitLists are cumulative. This means that putting "ADAPTEC" in the Fragment field, and "ADAPTEC" in the Subject field would mean that "ADAPTEC" would have to appear in BOTH the message TEXT AND in the SUBJECT field in order for the message to be posted to your HitLists conference. 9.1 - Practical uses for HitLists To make the concept a little easier to understand; I'll give you a few examples. 1. You are infatuated with a Star Trek character, and want to read everything posted in the Trek conferences about him/her. Make one entry for the subject line, where the subject contains TROI, and the Status field is set to Select. Make another entry for the message text. Set Fragment to TROI. You could also make ones for DEANNA, MARINA, SIRTIS, etc -- which would yield messages of every possible combination (except of course where the person calls her Diana :). 2. You are interested in buying a SoundBlaster for your computer, but you don't want to pay the full price for a new one. So you've decided to monitor the BuySell conferences for one, but don't want to go through the drudgery of actually reading all those messages about broken washing machines for sale. Make two entries for the subject line, one containing SOUND, and the other containing BLASTER. Make two Fragment entries, one containing SOUND, and the other BLASTER. You might even make the two subject lines also contain a Fragment search as well, since that would narrow down the search to only those messages which contain both matching phrases in the subject and message text. 9.2 - The effect of Rejected HitList entries If a HitList entries Status field is set to Reject, and a message is found with criteria that matches the HitList entry, it will be NOT BE SHOWN anywhere in the packet. You will not see it any conference. This makes HitLists the most powerful twit list ever devised. :) !! Very important note: HitLists will NOT operate if Other Options|Create Index Files is not set to ON in the configuration. It is during the indexing phase that the HitLists are examined. 10.0 - NameLists NameLists are pretty much what they appear to be; lists of names. You can use these lists in many ways. Many people, at one time or another find it necessary to post multiple copies of the same message. Doing them one at a time can become extremely tedious, but by using a NameList, you can automate most of the process. To create a NameList, simply select NameLists from the Main Menu. If there are no NameLists on file, Viper will ask you if you wish to create one at that time. Answer yes. You will then be prompted for a 8 character filename for the new list, enter it. Next, you will need to enter a description of this list to make selecting the list at a later time easier (it's easier to pick by description than to remember filenames). ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍEdit NameList EntryÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 10-1 ³Name ........ ALL°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³Note ........ NANet Pascal Conference°°°°°°°°°°°°°°°°° ³ ³Conference .. 111°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³F1 Help Ctrl-Enter Accept ESC Abort  Next  Previous ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; After the description, a dialog box (shown in Figure 10-1) will be displayed that will allow you to enter information for the first name on this list. The fields are as follows: Name - the name of the person this copy should be sent to. Note - just a brief note about this entry to help you remember it later. Conference - the conference number that this copy should be posted in. Once you have finished entering the relevant information, and feel it is satisfactory, press to save it. If you feel otherwise, press to abort the process. The next time you use the NameLists, you will be shown a list of available NameLists, and you may pick one by pressing . To add a new one at this point, press , and finally, to delete one, highlight with the arrow keys and press . 10.1 - Using a NameList The most common use for a NameList, is to maintain a mailing list of some kind. Simply write a message as you normally would, except when entering the person to send it TO, press . You will be presented with a list of NameLists. Simply select one and press . The other way, of course, if you remember the filename you gave the list, is to just put @FILENAME as the TO: field. One copy of the message will automatically be created for each person in the NameList. 11.0 Communications Viper includes a relatively complete communications package, called ViperTerm. Some of ViperTerms features: - Full color backscroll, which has no practical size limit and can expand to fit available memory. - A full suite of Xmodem, Ymodem, and Zmodem protocols - Dialing directory - The most advanced script language ever seen in a DOS-based terminal program - Complete ANSI support; plus about 90% of VT-100 commands (incl. tabs) - All ANSI keystrokes (Up, Down, Right, Left, Home, End, Del, etc) If you've ever used another popular communications package then most commands should be relatively intuitive, and you should have no problem making the adjustment. 11.1 - Terminal mode There are two ways to enter ViperTerm's terminal mode; 1. Select "Terminal" from the Communications submenu on Viper's Main Menu. 2. Type: GETMAIL /T at the DOS prompt. Once inside, the following commands are available: views the backscroll. (See 11.1.1) clears the screen. brings up the dialing directory. (See 11.1.2) hangs up the modem, if connected. writes a screen image to disk. You will be asked for a filename. turns on the logfile (which will log all incoming data to a file). toggles between 25 and 43/50 line mode. (E/VGA only) brings up the communications parameters menu. (See 11.1.3) re-initializes the modem (sends the init strings again). toggles Doorway mode. This is useful on BBS's like PCBoard which support the use of all key sequences via Doorway mode. upload file(s). (See 11.1.4) downloads file(s). (See 11.1.5) , jumps to DOS (DOS Shell). Sends the name specified in either the default BBS entry, or the last one dialed. (A carriage return is automatically sent as well) Sends the password specified in either the default BBS entry, or the last one dialed. (A carriage return is automatically sent as well) 11.1.1 - Backscroll The backscroll contains all the information that has scrolled off the screen (up to the available amount of memory). All you have to do, is press . Once inside the backscroll, you have the following options: , , , , , - move around the buffer. - dump the entire contents of the backscroll to a file. You will be prompted for the filename. - write an image of the current backscroll screen to a file, again, you will be prompted for a filename. - return to Terminal Mode. 11.1.2 - Dialing directory ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍDialing directoryÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³Manual dial ² ³Ä#ÄÄÄNameÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄPhoneÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄSpeedij ³ 1. Toronto Twilight Communications v.32bis ³ 1-416-663-7010 ³ 38400 ³ ³ 2. Toronto Twilight Communications v.fc ³ 1-416-663-1103 ³ 57600 ³ ³ 3. Orchid Media ³ 555-2285 ³ 38400 ³ ³ 4. Just another BBS ³ 555-6625 ³ 38400 ³ ³ 5. ExtraHard Limited Systems ³ 555-7351 ³ 38400 ³ ³ 6. Ten Thousand BBS ³ 905-555-7273 ³ 57600 ³ ³ 7. USA Local Systems ³ 555-6003 ³ 57600 ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Figure 11.1.2-1: The Dialing directory Once you press you will be presented with a menu similar to the one shown in Figure 11.1.2-1. Using the cursor keys, highlight the BBS you wish to dial, and press . If you wish to dial multiple BBS's, use the cursor keys and tag each BBS you wish to dial by pressing , then press . If you wish to dial a number which is not in the Dialing Directory, simply highlight "Manual dial" with the cursor keys, and press . You will be prompted for a phone number; type it in, and press . If you know the number of the BBS you wish to dial, you may simply enter the number, and press . (The menu will track along as you enter the numbers) !! Note: You cannot add, edit, or delete BBS entries from the Dialing Directory while in ViperTerm. For the sake of keeping code size small, you may only perform these functions from the BBS Management option on Viper's Main Menu. 11.1.3 - Setting communications parameters The default communications parameters are obviously set in the configuration, however, you can change the parameters for the current session while in terminal mode. ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍChange COM ParametersÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ Figure 11.1.3-1:³Port ........ COM1 COM2 COM3 COM4 ³ ³Baudrate .... 300 1200 2400 4800 9600 19200 38400 57600 ³ Communications ³Parity ...... None Odd Even Mark Space ³ Parameters ³Stop bits ... 1 2 ³ Dialog ³Data bits ... 5 6 7 8 ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³ F1 Help Ctrl-Enter Accept  Move ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Pressing will display a dialog like the one shown in Figure 11.1.3-1. Simply use the / keys to go through the options, and the / keys to change the selection. When you are done, press to accept the changes, or press to abort. 11.1.4 - Uploading files Of course, a necessary feature for any terminal, is the ability to transfer files. This is described in 11.1.4 and 11.1.5. ÕÍÍÍÍUploadÍÍÍ͸ Figure 11.1.4-1: ³ Xmodem ³ ³ Xmodem CRC ³ Protocol selection ³ Xmodem 1K ³ menu ³ Xmodem 1K-G ³ ³ Ymodem Batch ³ ³ Ymodem-G ³ ³ Zmodem ³ ³ ASCII ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍ; Pressing will display the protocol selection menu shown in Figure 11.1.4-1. Simply use the cursor keys to select the protocol you wish to use, and press . Once you have selected the protocol, one of two things will happen; either you will be prompted for the name of the file to upload, OR, you will be given the Upload Manager. This depends on whether or not the protocol you chose supports batch operations (the ability to upload more than one file at a time, like Zmodem, Ymodem-G, etc). ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍUpload ManagerÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ Files selected: 2 ³ ³ Current directory: C:\VIPER ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³ Available Files Selected Files ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³ .. -dir- 6/23/94 c:\viper\viper.exe ³ ³ viper.exe 390k 3/27/94 c:\viper\file_id.diz ³ ³ venom.exe 130k 2/04/94 ³ ³ file_id.diz 1k 5/20/94 ³ ³ history.txt 7k 5/20/94 ³ ³ viper.key 1k 7/15/94 ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³SPACE Select ESC Abort ENTER Change directory F9 Change drives F10 Upload³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Figure 11.1.4-2: The Upload Manager If you have selected a batch-mode protocol such as Zmodem, you will be presented with the Upload Manager, shown in Figure 11.1.4-2. This system allows you to easily select files to be uploaded to the remote system. The directory listing will show the files that are present in your Upload Directory. You may highlight directories (such as the .. directory) and press to maneouvre about your hard disk. If you wish to change to another drive, press . To select a file, highlight it with your arrow keys, and press , it will then appear on the list on the right hand side of the window. When you are done picking files, simply press to begin the transfer. If you decide you no longer wish to do an upload, you may press at any time to close the Upload Manager window. !! Important note: Please note that protocols like Xmodem 1K-G, and Ymodem-G are meant only for error-correcting modems. If you do not have an error correcting modem, or are connected one which does not perform error correction, use a more reliable protocol such as Zmodem. 11.1.5 - Downloading files ÕÍÍÍDownloadÍÍ͸ Figure 11.1.5-1: ³ Xmodem ³ ³ Xmodem CRC ³ Protocol selection ³ Xmodem 1K ³ menu ³ Xmodem 1K-G ³ ³ Ymodem Batch ³ ³ Ymodem-G ³ ³ Zmodem ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍ; To download a file, all you need do is press , and use your cursor keys to select the protocol you wish to use for the transfer. If the protocol is one which does not have automatic filename transmission, you will be prompted for the name of the file. (Some of the Xmodem protocols) Most of the time, you'll be using protocols like Zmodem or Ymodem-G, in which case all you have to do is select the protocol, and that's it! ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Download ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ Protocol: Zmodem Bytes received: 0 ³ ³ Block check: Crc32 Bytes remaining: ³ ³ File name: Blocks received: 0 ³ ³ File size: Blocks remaining: ³ ³ Block size: 1024 Block errors: 0 ³ ³ Total blocks: Total errors: 0 ³ ³ ³ ³ Est. time: 0:00 Throughput: 0 CPS ³ ³ Elapsed time: 0:00 Efficiency: 0% ³ ³ Remaining time: 0:00 ³ ³ ³ ³ Progress: °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ ³ Status: Ok ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ Baud: 57600 StopBits: 1 ³ ³ DataBits: 8 Parity: None ³ ³ Sfw Flow: Off Hdw Flow: On ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Figure 11.1.5-2: The file transfer status window During the course of the file transfer, the file transfer window shown in Figure 11.1.5-2 will be displayed. This window will give you a visual indication of how far the transfer has progressed (the Progress indicator) and show you the number of bytes transferred, left to transfer, and total number of bytes. In addition, any errors encountered during transmission will also be displayed. ViperTerm will attempt to estimate how much time is left till completion, although due to the compressed nature of data transmission these days, it is often difficult to get an accurate reading. (This will be improved in the very near future) While this window is in place, you may abort the transfer at any time by pressing . You will be prompted as to whether or not you are sure you wish to abort the transfer. 11.2 - ViperTerm command line parameters You can pass ViperTerm (GETMAIL.EXE) a number of command line parameters, they are detailed below. Please note that the parameters must be separated by spaces on the command line or ViperTerm will not recognize them. All command line parameters override any related options specified in the configuration, so be careful. /T - Enter terminal mode /NOINIT - Skip modem initialization (useful if you are already online) /NOHOOK - Do not hook INT 10h for backscroll /DIGI - Use DigiBoard mode /FOSSIL - Use FOSSIL mode /INT14 - Use INT 14h/network communications mode /UART - Use UART mode /RUN: - Run the specified script. Do not include an extension, since .SCR is assumed. /BBS:/ - Specifies the BBS to use for a script. You may either pass the number of the BBS in the dialing directory, or a BBSID - like TTC. /MAILRUN - Executes a mailrun on the currently selected BBS. /IRQ: - Use an alternate IRQ (eg: 3, 4, 5, etc) /IOBASE: - Use an alternate I/O base (eg: 3D8, 5F8, etc) /COM: - Use an alternate COM: port (eg: 1, 2, 3, 4, 5.. etc) /PEPDEBUG - Specifies PEPPER script debugging mode 12.0 - Pepper, the script language Naturally, since the script language is such a complex work, it is a very long thing to describe. For the most part; Pepper is a complete Pascal implementation, so the shortest way for me to describe it at this point, would be for me to ask you to read an introductory book to Pascal programming, and then describe the minute differences between Pepper and Vanilla Pascal. 12.1 - Differences between Vanilla Pascal and Pepper These are the rules you must live by when writing scripts for ViperTerm: 1. Pepper does not use the standard := variable assignment operator, instead it uses the same '=' operator for both a comparison and assignment operator and differentiates between the two through context. Example: a:=a+1; <--- WRONG! a=a+1; <--- RIGHT! 2. It is not wise to dereference function results as procedure parameters, since all parameters are treated as VAR parameters. Example: function add(a,b:word):word; begin add=a+b; end; procedure do_me(a:word); begin writeln('I am nice:',a); end; begin do_me(add(5,5)); <--- BZZT! WRONG! end. The main begin..end sequence should look like this: var c:word; begin c=add(5,5); do_me(c); <--- Much better! end; 3. Pepper does not support comments (eg: { this comment } or (* this *)) so do not use them. You _will_ get errors while running your script. 4. Pepper only allows ONE statement per line, like so: writeln('hello, how are you?'); writeln('i am nice'); <-- WRONG! writeln('hello, how are you?'); <-- RIGHT! writeln('i am nice'); 5. Pepper does not support block-mode file I/O, only text-mode. 6. You can not reference string elements as characters, instead you must use the Copy() function to extract a character: var b : string; a : char; begin b='hello, dolly'; a=b[5]; <-- WRONG! a=copy(b,5,1); <-- RIGHT! end. 7. You cannot specify string widths/decimal places with colons; eg: writeln(real:2:5); Neither colon is valid. 8. You cannot use arrays. 9. Follow the rules! In many cases, PEPPER may _not_ stop you from doing these things, and instead may crash, do unpredictable things, etc. That's about it for the differences. :) 12.2 - Supported variable types Pepper supports the following variable types: string - a string of characters. Note however that you cannot reference individual characters like an array, and you cannot specify the length (eg: string[80] does not work) all strings are 255 characters by default (256 bytes) longint - a standard 32-bit long integer (4 bytes) boolean - a boolean value which can be either TRUE or FALSE (one byte) byte - a single byte word - a word (two bytes) char - a character (one byte) text - a text file handle (256 bytes) Please note that the following will NOT be reported as errors, but cannot be used with anything: file - a block-mode file handle (256 bytes) pointer - a 32-bit pointer (4 bytes) array - a 32-bit pointer to an array segment (4 bytes) You can NOT use "integer" as a type. Instead, use "word" which has a range of 0-65535. If you need negative values, use a "longint" instead. 12.3 - Internal variable reference Pepper has many internal variables to make your script writing easier. They are described below. 12.3.1 - Information variables PgmName : string; { The name of the program } Version : string; { The revision of the script language } VerWord : word; { The numeric revision of the script language } Password : string; { The password of the loaded BBS } UserID : string; { Your name on the loaded BBS } Logfilename : string; { The name of the capture file } QWKPath : string; { The path to the .QWK files } REPPath : string; { The path to the .REP files } DLPath : string; { The path to downloaded files } ULPath : string; { The path where files to be uploaded are } PgmPath : string; { The path the program is running from } XferSuccess : boolean; { The result of the last file transfer } BBSNumber : word; { The number of the BBS specified on the command line } LastError : word; { A number containing the last script error } TokenFound : byte; { WaitFor returns the token number found in this var } Quiet : boolean; { The toggle for quiet mode, if TRUE, no chars are echoed } Watches : boolean; { If TRUE, WatchFor()'s are valid, otherwise not } AutoANSI : boolean;{ If FALSE, ViperTerm will not acknowledge ANSI requests } CDCheck : boolean; { If TRUE, and carrier is lost, script will abort } 12.3.2 - Status Variables These variables control what is displayed in the "Selected BBS"/transfer status window on Viper's main screen. Connect : boolean; { If TRUE, the Viper main screen will say "connected" } RepFound : boolean; { If TRUE, a REP was available } RepXfer : byte; { The number of upload attempts required to send the REP } QWKFound : boolean; { If TRUE, a QWK was available } QWKXfer : byte; { The number of download attempts required to get the QWK } 12.4 - Internal function/procedure reference ---------------------------------------------------------------------------- Procedure Writeln([f : text], var); Writes a variable to either the screen or a textfile. The file must be open. Multiple variables may be written. ---------------------------------------------------------------------------- Procedure Readln([f : text], var); Reads a string (only) from a file, up to the first CR (CHR(13)). The file must be open. ---------------------------------------------------------------------------- Procedure Assign(f : text; name : string); Assign a textfile variable to a filename. ---------------------------------------------------------------------------- Procedure Rewrite(f : text); Rewrites a file. The file variable must be assigned. If the file exists, it is overwritten, if it does not, a new file is created. ---------------------------------------------------------------------------- Procedure Append(f : text); Appends to a file. The file must be assigned, and it must exist. ---------------------------------------------------------------------------- Procedure Reset(f : text); Resets a file. The file must be assigned, and it must exist. Sets the position pointer to the beginning of the file if it is already open. ---------------------------------------------------------------------------- Procedure Close(f : text); Closes a file. The file must be assigned, and it must exist. ---------------------------------------------------------------------------- Procedure GotoXY(X, Y : byte); Positions the cursor at X, Y. ---------------------------------------------------------------------------- Procedure Clrscr; Clears the screen. ---------------------------------------------------------------------------- Procedure Window(X1, Y1, X2, Y2 : byte); Sets the current viewing window on the screen. ---------------------------------------------------------------------------- Procedure TextColor(Color : byte); Sets the foreground color. ---------------------------------------------------------------------------- Procedure TextBackGround(Color : byte); Sets the background color. ---------------------------------------------------------------------------- Function Length(st : string) : byte; Returns the length (number of characters) in the string specified. ---------------------------------------------------------------------------- Function EOF(f : text) : boolean; If the current position of the file is at the end, EOF returns TRUE. The file must be assigned and open. ---------------------------------------------------------------------------- Procedure Send(var v); Sends the variable out the currently selected serial port. Any type variable other than text is supported. (Non-string variables will be converted to strings first) ---------------------------------------------------------------------------- Procedure Waitfor(st : string [; timeout : longint]); Waits for ST to be in the buffer. Timeout is the period of time to wait, in clock tics (approximately 1/18th of a second). If you do not wish a timeout period, simply omit this variable. If you wish to wait for more than possible string, simply use the | delimiter. EG: Waitfor('|'); Would wait for either *OR* . The number of the token found is returned in the TOKENFND variable. ---------------------------------------------------------------------------- Procedure EmptyBuffer; Empties the buffer containing received characters. It is wise to clear this buffer in loops that use WaitFor -- since what you are looking for has already been found. ---------------------------------------------------------------------------- Procedure DialBBS( st : string | num : longint); Dials a BBS. You may specify either a string value (for manual dial), or a number (longint/word/byte) to specify an entry in the dialing directory. ---------------------------------------------------------------------------- Procedure AddWatch(Token, Response : string); A "watchfor" is a string that is constantly checked for during a Waitfor() or a TermLoop. When it is seen, the 'response' is sent. This is perfect for prompts that *may* appear, eg. 'More (Y/N)?' type prompts that follow a news bulletin. Note: The 'watchfors' are controlled by the boolean variable WATCHES. If WATCHES is set to FALSE, then Viper will NOT watch for anything. The default is TRUE, however. (There may be certain places where you would want to temporarily disable the WATCHFOR's) ---------------------------------------------------------------------------- Procedure Terminal; Go into interactive terminal mode. Once the user presses Alt-X in terminal mode, control is released to the script. ---------------------------------------------------------------------------- Function ExistFile(filename : string) : boolean; If the file specified in 'filename' exists, ExistFile returns TRUE. ---------------------------------------------------------------------------- Procedure Upload(Protocol : char; Filename : string); Sends 'filename' using the protocol specified in 'protocol'. Valid protocols are: Z)modem, 8)K-Zmodem, Y)modem Batch, Ymodem-(G), X)modem, Xmodem-(C)RC, K)ermit, and A)SCII. ---------------------------------------------------------------------------- Procedure Download(Protocol : char; Filename : string); Receives file(s) using the protocol specified in 'protocol'. 'Filename' is only used on non-batch (Xmodem) file transfers. Valid protocols are: Z)modem, 8)K-Zmodem, Y)modem Batch, Ymodem-(G), X)modem, Xmodem-(C)RC, and K)ermit. ---------------------------------------------------------------------------- Function OnCurLine(st : string) : boolean; Returns TRUE if 'st' is on the current line being received. ---------------------------------------------------------------------------- Function InBuffer(st : string) : boolean; Returns TRUE if 'st' is in the last 1024 characters received. ---------------------------------------------------------------------------- Procedure Erase(filename : string); Erases the file 'filename'. Note, the file must *not* be open. ---------------------------------------------------------------------------- Procedure SeqRename(filename : string); Renames the file 'filename' sequentially numbered. (eg. TEST.ZIP would become TEST.ZI1. Doing the same thing again would make TEST.ZI1 become TEST.ZI2, and TEST.ZIP would become TEST.ZI1.) This is primarily for saving mail packets. ---------------------------------------------------------------------------- Procedure Rename(filename, newname : string); Renames the file 'filename' to 'newname'. Note, the file must *not* be open. ---------------------------------------------------------------------------- Procedure Exec(filename, parameters : string); Runs the program 'filename' with 'parameters'. Eg: Exec('COMMAND.COM','/C DIR/W'); .. would cause the command interpreter to be loaded, perform a DIR/W and exit. The terminal screen is saved before the program is run, and restored afterwards. Code is swapped to EMS, XMS, or disk to maximize shell memory. ---------------------------------------------------------------------------- Procedure TermLoop; Simply put; it reads any new characters from the com port, and displays them. Note: if you use a loop with InBuffer() or OnCurLine() to check for multiple incoming items, you must use TermLoop inside that loop to make sure the screen is updated and incoming characters are being processed. ---------------------------------------------------------------------------- Procedure Message(st : string); Displays a message with a little 'þ' in front of it. ---------------------------------------------------------------------------- Procedure MessageBox(st, title : string); Displays a message in a pop-up window for MsgDelay milliseconds, with a title. ---------------------------------------------------------------------------- Procedure Halt; Stops script execution and releases control. ---------------------------------------------------------------------------- Procedure Hangup; Hangs up the modem by fluctuating the DTR line. ---------------------------------------------------------------------------- Procedure Inc(var v; amount : longint); Increments the ordinal value of v by 'amount'. (eg. must be longint/word/byte) If amount is not specified, 1 is assumed. Important note: Use Inc() in progressive loops rather than a=a+1, since it requires less parsing and is therefore faster. ---------------------------------------------------------------------------- Procedure Dec(var v; amount : longint); Decrements the ordinal value of v by 'amount'. (eg. must be longint/word/byte) If amount is not specified, 1 is assumed. Important note: Use Dec() in progressive loops rather than a=a-1, since it requires less parsing and is therefore faster. ---------------------------------------------------------------------------- Function Copy(st : string; index, count : byte) : string; Copy returns a string containing 'count' characters starting with the Index'th character in 'st'. ---------------------------------------------------------------------------- Function Pos(subst, st : string) : byte; Searches for substring 'subst' in 'st', and returns the position of 'subst'. If not found, Pos returns 0. ---------------------------------------------------------------------------- Procedure Capture(onoff : boolean); Turns the capture (log) file on or off, based on the value of 'onoff'. Note, trying to turn it on when it is already on will cause an error. ---------------------------------------------------------------------------- Function KeyPressed : boolean; Returns TRUE if a key has been pressed and the value is waiting in the keyboard buffer. (Great for "Press any key..." routines) ---------------------------------------------------------------------------- Function ReadKey : char; Returns the next character in the keyboard buffer, or #0 if none available. ---------------------------------------------------------------------------- Function ShowANSIFile(FileName : string); Displays a text file with ANSI support. ---------------------------------------------------------------------------- Function DateStr(DateMask : string) : string; Returns the date, using DateMask. EG: DateStr('MM-DD-YY'); Would return 06-12-96 if it were June 12th, 1996. Note, the functions Tomorrow() and Yesterday() return their respective dates, and operate on parameters identical to those that DateStr() uses. ---------------------------------------------------------------------------- Function TimeStr(TimeMask : string) : string; Returns the time, using TimeMask. EG: TimeStr('hh:mm:ss'); Would return 14:20:05 if it were 2:20:05pm. Note; you can add "t" to the datemask to includ the "p"/"a" part of am/pm or "te" to actually include "am" or "pm" depending on the time. ---------------------------------------------------------------------------- Procedure PCBWrite(ToWrite : string); Writes the string ToWrite to the screen, automatically interpreting embedded PCBoard @X?? color codes. Format for these codes are as follows: @XBF - Where B is the background color in hex, and F is the foreground color in hex. ---------------------------------------------------------------------------- 13. External programs Many of you may wish to use certain external programs with Viper, such as external text editors, terminals, tagline pickers, quote managers, viewers, etc. 13.1 - Tagline Managers In order for a tagline manager to be compatable with Viper, it must be able to output the tagline to file in the Viper subdirectory, and the file must be named either JH0.REP, or TLX.TAG. All that is required for this to be setup, is for you to change your Tagline Options|Tagline Hook to reflect the proper calling convention for your tagline manager. Here are two examples, one for Tagline eXpress, and the other for Cherry Picker (both are popular tagline managers): Tagline eXpress: \TLX\TLX.EXE G \TLX @MSGFILE@ Cherry Picker: \CP\CP.EXE \CP\TAGARRAY.VAR Note the differences; Tagline eXpress has a @MSGFILE@ embedded in it. This tells Viper to output the message being tagged to disk, and to replace the @MSGFILE@ token with the filename of the message. This allows Tagline eXpress to suggest taglines based on your message text. 13.2 - Quote enhancers Viper supports quote enhancers that work in a similar way to Tagline eXpress's quote enhancement facilities. Basically, Viper will output the message to a file and let the quote enhancer play with it, then load it back in for editing. Here's how you'd implement Tagline eXpress, simply set Quoting Options|Quote Hook to: \TLX\TLX.EXE Q \TLX\ @MSGFILE@ This is of course presuming the directory you have Tagline eXpress installed in is \TLX. 13.3 - RIP Viewers Viper will support any RIP viewer that can accept the name of the RIP file to view as the first command line parameter. All you have to do is put the name of the viewer's EXE file into Paths|RIP Viewer. I've tested Viper with FreeView (obviously, since it's included), and DeadView. 13.4 - Terminals You can use external terminal programs such as deltaComm Development's Telix with Viper quite easily. Just change Paths|Terminal Porgram to reflect the name of the terminal program you wish to use. 13.5 - Text editors and viewers Simply change Paths|Text Editor or Paths|Text Viewer from INTERNAL to something like this (naturally, replace the path shown below with the correct path for your system): C:\UTIL\QE.EXE to use SemWare's QEdit as your external editor. C:\UTIL\LIST.COM to use V.Buergs LIST.COM as your external viewer. 14. Troubleshooting Here in the troubleshooting department, I'll try to answer a few common questions with some simple answers. :) --- Q: I keep getting an "Invalid Packet" error when I try to open a packet, what am I doing wrong? A: There may be insufficient memory available to run the appropriate decompression program to open the packet. Try turning Internal ZIP, and Internal LZH ON. It is also possible that Viper could not find your compression programs. --- Q: When I try to open a packet, Viper says "PKZIP: Insufficient memory", and I'm running OS/2, what's wrong? A: If you are running OS/2, then you should make sure that Compression|No I/O redirection is turned ON. Redirection is apparently incompatable with the OS/2 DOS box. --- Q: I want to forward a message from one BBS to someone on another BBS, how can I do that? A: It's a three step process: Step 1 - Copy the message you wish to foward to a folder. Step 2 - Close the current packet, and open one from the BBS you wish to forward the message to. Step 3 - Open the folder, find the message, and forward it. --- Q: None of my HitList entries are working, and I'm positive I've entered them correctly, why? A: Make sure that you have Other Options|Create Index files turned ON. HitLists cannot operate unless the indices are being created when you open a packet. --- Q: There are a few options I forget how to use, and it would be great if I could edit the online help. Can I do that? A: Yes, just edit the file VIPER.HLP with your favorite text editor. However, be careful the lines are no longer than the ones currently in the file, and do not remove any of the @@@ lines. --- Q: The automated mail transfers are screwing up royally. What can I do to fix them? A: Make sure that on your PCBoard BBS account you have EXPERT MODE turned on, you can activate it by type X and at the PCBoard prompt. It should say "Expert mode is now ON.". In addition, it would be helpful if you made sure your RoseMail/Qmail4 setup is correct; see 2.5. below: If you are using Qmail4 - make sure the door is configured like this: 1. D/L your replies.......... OFF *11. Use extended prompts........... ON 2. D/L packets without msgs.. OFF 12. Delay prompts one second....... OFF 3. Logoff after U/L replies.. OFF *13. Clear keyboard buffer.......... OFF 4. Send the WELCOME screen... ON *14. Enable "QwikStart"............. ON 5. Send the system NEWS...... ON 15. Repeat scanning................ OFF 6. Scan for new BULLETINS.... ON 16. Replace @variables............. ON 7. Scan for new FILES........ ON 17. Selected confs in CONTROL.DAT.. OFF 8. Send the GOODBYE screen... OFF 18. Capture reply insertion........ OFF 9. Send the DeLuxe menu...... OFF 19. Do not create .NDX files....... OFF 10. Send SESSION.TXT.......... ON 20. BBS time stamp on replies...... OFF ... if you use RoseMail: 1.*Use IN/OUT or QWK/REP......... QWK 12. Download your replies......... NO 2. Download empty packets........ NO 13. Use current date/time......... NO 3. Flush the input buffer........ NO 14. Include the NEWS file......... YES 4. Include the Welcome screen.... YES 15.*Delay scripting prompts....... YES 5. Include Bulletins............. YES 16. Repeat downloading............ NO 6. Include Upload Files Listing.. YES 17. Small CONTROL.DAT file........ NO 7. Include Download Files Listing NO 18. Empty packets on mail only.... NO 8. Include a copy of the session. NO 19. Send User information......... NO 9.*Use script prompts............ YES 20. Do not send NDX files......... NO 10. Use fast start sequence....... YES 21. Repeat download after Prescan. NO 11. Prescan during event.......... NO 22. Repeat scans continue......... NO The fields marked with a * are NECCESSARY for the included scripts to operate correctly. All others are merely personal preference. Also, make sure in either Qmail4 or RoseMail that EXPERT MODE is turned ON, as the the menus may confuse the script. --- Q: The COM: port my modem is on has a non-standard IRQ and base address, how can I use it with Viper? (Exampe: COM3:, IRQ 7, base address 7F8) A: Set Other Options|Default mailrun parameters to include the following: /MAILRUN /IRQ:7 /IOBASE:7F8 /COM:3 Set Paths|Terminal to: /T /IRQ:7 /IOBASE:7F8 /COM:3 That should do the trick. --- 15.0 Appendices 15.1 - Rosemail/Qmail4 door settings Qmail4: 1. D/L your replies.......... OFF *11. Use extended prompts........... ON 2. D/L packets without msgs.. OFF 12. Delay prompts one second....... OFF 3. Logoff after U/L replies.. OFF *13. Clear keyboard buffer.......... OFF 4. Send the WELCOME screen... ON *14. Enable "QwikStart"............. ON 5. Send the system NEWS...... ON 15. Repeat scanning................ OFF 6. Scan for new BULLETINS.... ON 16. Replace @variables............. ON 7. Scan for new FILES........ ON 17. Selected confs in CONTROL.DAT.. OFF 8. Send the GOODBYE screen... OFF 18. Capture reply insertion........ OFF 9. Send the DeLuxe menu...... OFF 19. Do not create .NDX files....... OFF 10. Send SESSION.TXT.......... ON 20. BBS time stamp on replies...... OFF RoseMail: 1.*Use IN/OUT or QWK/REP......... QWK 12. Download your replies......... NO 2. Download empty packets........ NO 13. Use current date/time......... NO 3. Flush the input buffer........ NO 14. Include the NEWS file......... YES 4. Include the Welcome screen.... YES 15.*Delay scripting prompts....... YES 5. Include Bulletins............. YES 16. Repeat downloading............ NO 6. Include Upload Files Listing.. YES 17. Small CONTROL.DAT file........ NO 7. Include Download Files Listing NO 18. Empty packets on mail only.... NO 8. Include a copy of the session. NO 19. Send User information......... NO 9.*Use script prompts............ YES 20. Do not send NDX files......... NO 10. Use fast start sequence....... YES 21. Repeat download after Prescan. NO 11. Prescan during event.......... NO 22. Repeat scans continue......... NO The fields marked with a * are NECCESSARY for the included scripts to operate correctly. All others are merely personal preference. Also, make sure in either Qmail4 or RoseMail that EXPERT MODE is turned ON, as the the menus may confuse the script. 16.0 Registration and program information If you are interested in a mailreader that has database functionality, I feel I should let you know that v3.0 (due November '94) will have this feature supported in a way that is more flexible than anything else on the market. SysOps ------ A version of Viper for PCBoard v15.x SysOp's is already in beta-testing. It should be ready in a month or so. Later on; when some of the new technology we're developing is ready, we'll be able to support most BBS message base types directly, and you'll be able to use Viper directly on any BBS's message base. Real mode issues ---------------- There is a real mode (Viper/LITE) version available as VLITE200.ZIP. This archive includes ONLY the VIPER.EXE program file. Simply install Viper, and unzip this archive over the protected mode version you've already installed. This allows those users with older machines and odd memory configurations to run Viper at least in a minimum capacity. (This version costs the same as the full Viper package, but registered users are able to switch to the full-blown version of Viper at no cost, by just moving their KEY file to a shareware version of Viper) Windows ------- Windows? Did I hear Windows? :) I am fully committed to developing a Microsoft Windows version of Viper, and as soon as Windows 4.0 (Chicago) is released, I will begin work on a Windows version. At this point in time, developing for normal 16-bit Windows is pointless, since I'd only have to migrate it to Chicago later anyway. (And besides; Windows 3.x performance is so lacking compared to DOS it's pointless!) OS/2 ---- OS/2? :) As soon as Borland releases a OS/2 compliant version of Borland Pascal (which I hope will be soon) I will compile a version specifically for OS/2 with full multi-threading etc. If you register 2.0 before December 1st, 1994, you'll be entitled to a free registered version of either the Windows or OS/2 versions, whichever you want. 16.1 - Contacting the author I can be contacted thru the following mail networks: ILink: MAILREADERS/OFFLINE/SHAREWARE/SHAREISSUES conferences. NANet: SYSOPS/SHAREWARE/PASCAL conferences. Echonet: SYSOPS/PASCAL conferences. RelayNet: OFFLINE MAIL/PASCAL/COMMON conference. (Or route to ->TTC #5598) Internet: viper@ttcbbs.com BBS: Toronto Twilight Communications (PCBoard v15.1/10) +1 416 663 1103 (Microcom 28.8 Deskporte ES) [3 nodes] +1 416 663 7010 (USR Dual Standard v.32bis/v.42bis) [3 nodes] FTP: Latest versions will always first be posted on: ftp.can.net archives/msdos/viper Snail mail: Chris Lautenbach 17 Annapearl Crt, Willowdale, Ontario CANADA M2N 4H6 16.2 - Developer information All Viper data structures are available upon request. In addition, I have an active interest in supporting third party support for Viper. If you have a program that you think would integrate will into Viper, let me know, and I will be glad to provide any assistance you need in implementing it (including any code changes that might be needed on my part). In the future, I will be working on making Viper support third party applications (TPA's) that are in DLL (Dynamic Link Library) form. The advantage to this is a closer contact between Viper and any TPA written for it, since the TPA would be loaded at runtime, thereby being in memory at all times for fast execution. (In addition, these TPA's could be written with any language that supports compilation of 16-bit DOS DLL's) See 16.1 for more information on how to contact me, I'm here to help! 16.3 - Greetings and salutations I'd like to thank everyone that actively participated in the beta-testing and development process; specifically the more vociferous ones: Cheryl Applebaum, Peter Baliunas, Andrew Makiejewski, Dereck Gomes, Colin Wright, Pearce Daley, Tony Lautenbach, Geoffrey Sy, Richard Jones, Greg Warren, and anyone else I've forgotten! 16.4 - Registration information Since Viper is shareware, you are entitled to a 45 day evaluation period. Registration is only $19.95US for they key file -- all you need do is call our BBS, and download it when it's ready. (The key file is small, usually under 100 bytes!) For $29.95US, you get a disk containing the latest version, registered to you, and a typeset, bound manual. In addition, you can register Viper on our BBS with VISA, by logging in as a new user, and then going thru the VISA process as you are asked, or by typing VISA at the Main Board prompt. Simply call, enter your information, and call back 24 hours later, and your keyfile will be available for downloading. See REGISTER.FRM for a complete registration form for mailing, we accept cheques and money orders in US currency, and we also accept VISA by mail, if you'd rather not spend the money on long distance calling our BBS, and we'll mail you back your key. We hope to have foreign registration sites soon. If you know of any good ones, please let us know -- we're looking. Thank you for evaluating Viper, we hope it suits your needs, Chris Lautenbach, President, Key Research and Development.