New Features If you are upgrading from a previous version of GAP, we strongly suggest that you back up your USERS.DAT and USERS.IDX files. Do this before you run GAP since, after installing the new executable files, the first time you run GAPMENU, you should automatically be taken into the User Editor so that some changes can be made to your User File. If, GAPUSER is not automatically invoked, or if it is but it does not successfully convert your user file, you will need to exit to DOS, delete your USERS.IDX file and run GAPREBLD. Enhancements and Fixes GAPMENU Fixed a bug in where the baud rate would not change to match the caller's rate (this would only affect you if you have Lock DTE rate (in configuration) set to No). Fixed the On-Hook, Off-Hook routines in GAPMENU so that they will now clear the COM buffer instead of leaving the OKs in the buffer. The extra OKs were causing some confusion. The command responses from the modem are now shown on the status line. This should help some sysops in verifying that their modems are configured correctly. You should see one OK for every carriage return in your INIT and RESET string. GAPUSER From the Utilities Menu, you may now register only those users that have a specific security level in a specific Forum. For instance, if you need to register all users with a level 82 in Forum 5, you can use this utility to do just that. Also from the Utilities Menu, you may sort your User File by Level / Name. This function takes the place of a GAPREPRT script that was written to accomplish the same thing. There is really no practical benefit, other than an aesthetic one, to physically sorting your User File. Page 1 GAP Communications New Features The Reports Menu allows you to create a list of all your users, as well as a list of those users who's subscription is or is about to expire. The Expired Subscription report will be unavailable (you will not be allowed to select it) if you do not run a subscription board. GAPFILE When editing a record, if you change either the area or subject field, after saving the changes, the next record (after the one you were just editing) will be displayed. Previously, GAPFILE would display the record you just edited which would then be in a different area or subject, depending upon which field was changed. This was counter productive if you were indexing through a set of files as you would then have to "find" your way back to where you were. Modified the Global Change Utility function where you enter passwords. Previously, you could not leave either of these password fields blank. This doesn't work if you have files with no password and now want to password protect them (or visa versa). You can now leave one of the fields blank, but not both. Added a new field to the Global Change Utility so that you may change the Filename Extension from one extension to another. If you turn the Where field On (set it to Yes) and enter an '*' as the first character of the Old Value field, and in the New Value field, enter a drive designator (i.e., D:), GAPFILE will change only the drive designator in the Where field for each file selected, and will keep the directory path. In other words, if you need to move files from drive C: to drive D:, and yet keep the same directories, enter an '*' as the first character in the Old Value field for the Where entry, and type in the drive designator in the New Value field. The FileBase will be updated but the files themselves will not be moved. Fixed the problem when using the F6 (Move File) command. The keyword file will now be updated correctly. GAPSETUP Moved the Restricted Baud Rate items from the Modem Configuration Screen onto their own Screen. There is a new modem option where you specify Yes or No if you want GAPMENU to delay between each character that is sent to the Page 2 GAP Communications New Features modem to INIT or RESET it. Unless you use an off brand 2400 baud modem, you should set this field to No (it defaults to Yes). Previously, GAPMENU would delay 1/18th of a second between each byte sent to the modem when trying to Init the modem. This is now sysop definable. Added a new parameter for specifying if GAP should send a BREAK signal to the modem to clear the modem buffer. A break signal normally tells a modem to empty its internal buffer. If a caller presses CTRL-K, CTRL-X, or while viewing files (or at anytime when in Non-Stop mode), GAP will send a "break" to the modem. What affect this has on the caller depends on your modem. If sending this "break" signal to the modem causes problems you should set this field to No. If you use a USR modem and have the break setting (&Y) set to 1, the modem will empty its buffer. If a caller is at less than your maximum speed, this means the abort takes effect almost immediately. Previously, the abort would take place only after your modem emptied its buffer. On the BPS Rate Restriction Screen there is a new field that allows you to specify the highest baud rate that is not allowed on your system. You would use this field if you do not want 300 or 1200 baud callers at all and use the other "restrict" field if you'd like to restrict 2400 baud (or whatever) calls during certain times of the day. On the second Miscellaneous Information Screen, there is a new field where you define your AnsiCmd. We recommend changing the AnsiCmd to an '@' or something you can 'see' and modify all of your text files accordingly. If you do not change your AnsiCmd character then the character that is displayed on the configuration screen will appear to be a space. This is why we suggest that you change this character to an '@'. In the Message Quote Chars field, if you use 'G' as the first character of the Quote Characters, GAP will surround the quoted text with a graphic box. To see how this works, enter a 'G' as the first character of your Quote Characters, then reply to a message and quote portions of it. Note that this Graphic Box is not available in the Line Editor. If a caller uses the Line Editor and GAP is configured to use Quote Boxes, the Line Editor will use Initials instead. For this reason, if you choose to use the Quote Box, you should enter some character after the 'G' such as "G >". Page 3 GAP Communications New Features When using the Line Editor, the 'G' would be the same as 'I' for initials. On the File System Options Screen there is a new parameter for specifying the security level for uploaded files. GAPFILE also uses this field as the default level when adding new files. GAPBBS When Reading Mail in All Areas, the prompts are now different. Before continuing on to the next Area you will be asked if you want to Check for New Files, Enter a Message, Quit, or Continue reading All Areas. There is now a "smart" prompt in that you may check for New Files only once (and of course, the New Files prompt will not appear if there is no Files System in the particular Area that you are currently in). When reading All Areas, GAP will display the Forum Number in addition to the Forum Name when preparing to join a Forum to read messages there. GAP will now write a "600 - Log Off" to the caller log if a door program tells GAP to log the caller off the system. This should make your caller logs more appropriately show what occurred while a caller was in a door. Fixed a bug when Editing Messages. If you Replied to a message, aborted the reply, then immediately Edited the text of a message, the message pointers would be pointing to the wrong area of memory and the message you attempted to edit would be full of garbage. When Quoting messages, GAP will allow the quoted text to extend, as much as possible, beyond the normal line length (72 characters). In the Full Screen Editor, the quoted text can be 78 characters. In the Line Oriented Editor, the quoted text can be 74 characters. If you prepare ASCII files to import into the message base, you should still use 72 as the maximum line length, however, GAP will now allow the imported text to have a line length equivalent to the length of quoted text. GAPBBS now writes directly to the screen. We implemented this Direct Screen Write in an effort to get GAP out of the picture when it comes to bottlenecks. Page 4 GAP Communications New Features The BIOS is extremely slow when sending characters to the screen. Please note that if you are running GAP under DesqView, you do NOT need to set "Writes directly to Screen" to Yes since GAP uses DV's shadow buffer. We've gone back to filtering characters during the log on sequence. This should help prevent user file corruptions caused by people who log on with exceptional line noise. The only characters that will be accepted when GAP prompts for First/Last/Password are upper case A-Z (all characters are converted to upper case anyway), a space, semi-colon, apostrophe, dash, or a period. Added a global User Info file called ALL (goes in your USERINFO directory) that will be displayed to all users (if it exists) and will not be deleted by GAP after it is displayed. This file will be shown (to all except the sysop) irregardless of the Override Command (the regular User Info files are not shown if the caller uses the Override Command at log on). GAP will now display a file called NOTIME(g) (GEN directory) to a caller if, when GAP first checks the SECLEV file, the caller is given 0 minutes. If present, this file is displayed after the NEWS. After it is shown the caller will be disconnected. If the file is not present, then the caller will go through all the other log on routines and be logged off for "expired time" at the Main Command prompt. If you use baud/time specific SECLEV files and these files give some of your regular users zero minutes, you may use this NOTIME file to explain to these callers why they have no time during the restricted hours. For instance if, during the hours of 5:00 PM and 10:00 PM you wish to allow only those callers with a level of 90 or greater access, and you have created the appropriate SECLEV files to accomplish this, your NOTIME file would then explain to those callers who have a level less than 90 why they cannot gain access during these hours. Handles are now indexed. All callers will automatically have their handles (if they use one) removed. Any pre-existing handles must be removed so that GAP can manage them. GAPMENU will detect the current version number and send you to GAPUSER (if necessary) to remove the Handles. Note Page 5 GAP Communications New Features that GAPMENU does not use ISAM routines, it only knows if your version number is not current. So, if you run multiple nodes, you will be sent to GAPUSER "multiple" times, but only the first one (hopefully your Main Node) will get there first so that your user file can be converted. If you use Handles on your board, your callers will be prompted to re-enter their handle when joining a Forum that allows them. This is because no two users can have the same handle so all handles had to be removed. Handles must now be UNIQUE. They still cannot match a regular user name and they cannot now match a Handle that is already in use. In still another effort to outfox those callers who view a Forum Membership list (where the Forum allows handles) and then the Main Board Membership list, in an effort to determine who is who, if a caller is in a Forum that uses Handles and the caller does a Membership List, GAP will now show the list in Data File order, rather than Index order. Data File order is the order in which New Users were added to the User Data Base, unless you use the new Sort feature in the User Editor to sort your User file. As a side effect to the above change, the Membership List (while in a Forum that allows Handles) is much faster. The reason it is faster is because the ISAM routines only need go sequentially through the data file instead of dealing with the index file. When displaying files, the Subject Headers will now have a dash (-) separator between the Subject Number and Subject Description. GAP now shows you the name of the directory that is currently being searched during a New Files Scan or a Locate File Scan. CHAT and WHO are now available in the Files area (on multi-user systems). GAP will now delete all the left over files (if any) in the Work Directories before commencing a batch upload. If a caller attempts to upload a file that has the same name as a file that he/she already uploaded, then the caller can delete the previous file (or overwrite it as explained below), irregardless if the caller has the File Overwrite Security level (Sysop Level to overwrite files). The caller does, of course, have to be the owner of the original file. When uploading a file that duplicates a file already on the board (whether you are the owner of the file, the Page 6 GAP Communications New Features Sysop, or have the Sysop level to overwrite files), GAP will allow you to do the following with the file already in the Filebase: Delete the file (as in previous versions) Update the file Ignore and rename the new file with an 'X' as the first character. Deleting the File will remove the old file from the Filebase and the disk drive and the new file will go in the Upload Directory (as in previous versions). You will be prompted for a description of the file. Updating the File will keep the old entry in the Filebase, delete the old file from the disk drive and the new file will go in the directory where the old one was deleted from. You will not be prompted for a File Description in this case since there already is a description. The Filebase will be updated with the current file size, current date, and your name as Uploader (in case you have Overwrite privileges and yet you didn't upload the original file). If Ignore is chosen then the new upload will be renamed with an 'X' placed as the first character of the filename, and the description will read "Duplicate File" with the keywords showing the name of the file that was duplicated. The AnsiCmds have been dramatically improved. The next section, which was derived from the GAP Manual and assumes that you do not know what AnsiCmds are, describes the enhanced AnsiCmds in more detail. Page 7 GAP Communications New Features AnsiCmds It is possible to use replaceable parameters in all of your text files. These parameters, or AnsiCmds, allow you to personalize your text files so that they appear to have been written exclusively for the caller viewing them. We call these AnsiCmds because they are more suited for ANSI files than plain text files, although they can be used equally well in non-ANSI files. --------------------------------------------------------- AnsiCmd Description --------------------------------------------------------- ANAME Area Name BAVAIL Current Bytes Available for Download BDOWN Total Bytes Downloaded BIRTH User's Birthday BLTS Bulletins Read BPHONE User's Business/Data Phone Number BUP Total Bytes Uploaded CITY User's City/State CLS Clear the Screen DATE Today's Date DOPEN Total Doors Opened DOWN Total Downloads FAVAIL Current Files Available for Download FNAME User's First Name HPHONE User's Home Phone Number LEVEL User's Security Level LNAME User's Last Name LNEW Last New File's Scan MLEFT Total Messages Left MREAD Total Messages Read NOMORE Disable the More prompt PAUSE Show "Press [Any Key] To Continue" prompt SDATE User's Subscription Date TIME Time of Day TON Total Times On UBAUD Caller's baud rate UNAME User's Name (first & last) UP Total Uploads USEPAUSE Use Pause Prompt instead of More Prompt VER Version number of program Xcode Color Codes --------------------------------------------------------- Page 8 GAP Communications New Features To use a command, it must be prefixed with the AnsiCmd character that you set up on Miscellaneous Information Screen 2 in the Configuration Editor. The default is an AT sign (@). For instance: @UNAME - Display User's Name @LEVEL - Display User's Security Level When GAP encounters one of the Ansicmds, it will remove the command and substitute the appropriate parameter. GAP will eat or pad the file as necessary so that the replacement text will "fill in" the space taken by the AnsiCmd. For instance, if you use ANAME and are in the Main Board, GAP will display "Main Board" and will then "eat" 4 characters from the file. In most cases (providing you leave enough room for the replacement text) this will allow you to have borders and other fancy graphics (even in non-color files). Note that GAP will stop eating the file if it encounters an Esc (if it is a 'g' file) or a Carriage Return or Line Feed; or you may force a stop by placing the AnsiCmd Character where you want GAP to stop eating the file. To create an ANSI screen with replaceable parameters, you design your screen in the normal fashion. Wherever you want an AnsiCmd to appear, type the AnsiCmd character you configured and then the command itself. Be sure to leave enough room for the replacement text. For instance, if you wish to show the caller's first name on a screen that has a border, you need to leave enough room for GAP to insert the name so that the border remains intact: ------------------------------------ | Welcome to the BBS, @FNAME | ------------------------------------ This will work just fine. -------------------------------- | Welcome to the BBS, @FNAME | -------------------------------- This will not work if the caller's first name is longer than 8 characters, as the border will be 'eaten'. Page 9 GAP Communications New Features Special AnsiCmds @CLS, @NOMORE, and @USEPAUSE are considered special commands as they are normally placed at the beginning of a file. @NOMORE tells GAP to disable the More Prompt such that the screen will display uninterrupted. This command is useful for very long screens which use ANSI Animation where you do not want the More Prompt to appear. @USEPAUSE tells GAP to substitute the Pause Prompt ("Press Any Key To Continue"), in place of the More Prompt. This keeps callers from interrupting the file; they must view the file in its entirety. Xcodes To maintain compatibility with other programs, GAP can process Xcodes. To use text files from other programs that contain Xcodes your AnsiCmd character must be defined as the AT (@) symbol. Xcodes are a way to change the color attribute of a character that is sent to the screen. Instead of using the ANSI sequence of [1;33;40m to turn on Bright Yellow on a Black Background, you could use an Xcode of @X0E to accomplish the same thing (note that the @ is your AnsiCmd character and is Sysop definable). When IBM designed the IBM PC, they devised a set of color attributes. There are 256 different combinations of attributes that you can set. There are 8 background and 16 foreground colors. This results in 128 different color combinations. In addition, each foreground color can 'blink'. This gives 256 different color combinations that can be displayed in text mode on a Color Monitor. When GAP displays one of your ANSI screens, it interprets the ANSI codes in the file (when it encounters an SGR ('m') code), such that 1 of the 256 possible color combinations is utilized. The Xcodes are basically a quicker way to set the color attributes. The ANSI Driver is not utilized when an Xcode is encountered. Sample files containing ANSI color codes and Xcodes are provided so that you may see the difference. It should be noted that if you are in Local Mode, the Xcodes are faster than the equivalent ANSI strings. The reason being, GAP need only read 2 characters from the file and set the color. With ANSI files, GAP needs to send each character read from the file through the internal ANSI driver to determine the color code. If a remote caller is on, then GAP needs to take the color code that it received from the file, translate it to an ANSI string Page 10 GAP Communications New Features and send the string to the modem. This is still faster than going through the ANSI driver, but not much. Creating Xcodes Xcodes are a two character Hexadecimal number. They correspond to the 256 possible Video Attributes of the IBM PC. The first digit represents the Background Color (and/or Blink) and the second digit represents the Foreground Color. The following Table shows how to create an Xcode to produce the desired color: ------------------------------------------ Background Foreground ------------------------------------------ Color Normal Blink Normal Bold ------------------------------------------ Black 0 8 0 8 Blue 1 9 1 9 Green 2 A 2 A Cyan 3 B 3 B Red 4 C 4 C Magenta 5 D 5 D Yellow 6 E 6 E White 7 F 7 F The 1st digit of the Color Code is the Background. If you want the character to blink, you add 8 to the Background Color. The 2nd digit of the Color code is the Foreground. If you want the character to be bold, you add 8 to the Foreground Color. Examples: White On Black - X07 Blinking White On Black - X87 Bright White On Black - X0F Blinking Bright White On Black - X8F Page 11 GAP Communications New Features Old AnsiCmds As an aid for converting the AnsiCmds that were used with previous versions of GAP, please consult the following table: ---------------------------------------------------------------- Old New Description ---------------------------------------------------------------- ANAME Area Name DATE Today's Date PAUSE Show "Press [Any Key] To Continue" prompt TIME Time of Day VER Version number of program @ USEPAUSE Use Pause instead of More prompt { NOMORE Disable More Prompt ^L CLS Clear the screen B BLTS Bulletins Read C CITY User's City/State D DOWN Total Downloads F FNAME User's First Name G BIRTH User's Birthday H HPHONE User's Home Phone Number I LNEW Last New File's Scan J MREAD Total Messages Read K MLEFT Total Messages Left L LNAME User's Last Name M SDATE User's Subscription Date N UNAME User's Name (first & last) O DOPEN Total Doors Opened P BPHONE User's Business/Data Phone Number S LEVEL User's Security Level T TON Total Times On U UP Total Uploads V FAVAIL Current Files Available for Download W BAVAIL Current Bytes Available for Download X BUP Total Bytes Uploaded Y BDOWN Total Bytes Downloaded ---------------------------------------------------------------- Page 12