9 ============================================================================== Customizing Your BBS Internationalization Menus Adding Commands The Look And Feel Of Your BBS Display File Conventions Internationalization Adding A Language To add a language to your system, you need to edit your PCBML.DAT file (PCBSetup | File Locations | Configuration Files). By default, your file should look like the following: Language Extension Country CodePage Yes No ------------------------- --------- ------- -------- --- -- English (Default) Y N If you want to add the French language to your system, you would press ALT-I to insert a new line. The following describes each of the fields in this file: Language The name of the language. This is the text that is displayed to users when they are asked to choose a language at login. You should include the number of the language on this line. Extension The filename extension for language specific files. For example, if you are adding the French language, you may want to make the extension .FRE. This means if a file called WELCOME.FRE exists, it will be displayed at login to anyone who selects the French language. Country If you also want PCBoard to add date, numerical separator, and capitalization support for the language you are defining, enter the country number to use as defined by COUNTRY.SYS. For the French language this value is 033. CodePage The code page is also a function of COUNTRY.SYS and defines what characters are available in the language you are defining. This information should be provided in your operating system manual. As an example, the French language uses 850 in this field. Yes Since Yes and No are not the same in all languages, you can define the character that will be used to represent a response of Yes. In French, you most likely would like to use the letter O. No As with the Yes field, the language you are defining may use a character other than N to represent a response of No. Simply enter the character you wish to use to represent a response of No. Keeping all of the previous information in mind, your entry for the French language might look like the following: Language Extension Country CodePage Yes No ------------------------- --------- ------- -------- --- -- English (Default) Y N French FRE 033 850 O N Country Support PCBoard has the ability to extract the dates, thousands separator, and upper/lower case information from COUNTRY.SYS you can install with your operating system (DOS or OS/2). These changes will take effect when a language is chosen which selects a different country code. NOTE: If a user is on remotely, your status line will continue to use the default information as specified in your computer setup. That way, a user could be logged in, using the French language, but you, the SysOp, would continue to see the dates and numbers displayed as you are used to seeing them. Dates Dates will be displayed and entered using the country information specified by the language. For example, the United States uses the mmddyy format, where most European countries use the ddmmyy format for specifying dates. This all depends on the information provided by COUNTRY.SYS. If you are using a country which specifies dates in a format other than mmddyy, you will need to modify some of the records in the PCBTEXT file for the language. In particular, you will need to modify records 72, 266, and 688 because they ask the user to enter the date in mmddyy format. Thousands Separator As with the dates, PCBoard will be able to decide if the language specified needs to use the comma or the period for the thousands separator. For example, in the United States, a number could be displayed as 1,024,000 whereas with periods it would be displayed as 1.024.000. Upper And Lower Case In addition to reading the date and number information from COUNTRY.SYS, PCBoard can also determine what the proper capitalized and lower case characters are for a particular language. PCBoard will use this information throughout the system so users can enter responses in the syntax that they are most familiar with. Installing COUNTRY.SYS For PCBoard to support internationalization of dates, thousands separator and capitalization you must have COUNTRY.SYS installed on your system COUNTRY.SYS should come with your operating system including the instructions on how to install it in your system. The following sections shows you samples of how to install COUNTRY.SYS in both DOS and OS/2. DOS In your CONFIG.SYS file, add: COUNTRY=001,437,C:\DOS\COUNTRY.SYS This example shows an entry for the United States. By referring to your operating system manual, you should be able to see that 001 is the country number, 437 is the code page number to use, and the last parameter is the location of your COUNTRY.SYS file. OS/2 The configuration for OS/2 is quite similar to the configuration for DOS machines. You need to add the following line to your CONFIG.SYS file: COUNTRY=001,C:\OS2\SYSTEM\COUNTRY.SYS This example also shows you the configuration as it would appear for the United States. As you can tell, you need to only enter the country number and the location of your COUNTRY.SYS file. International Fonts The code-page information that you specify in PCBML.DAT gives PCBoard the ability to change the font used by the display adapter whenever a caller changes languages. The font change only shows up on the local screen and then only when it is a local login. In addition, you must have an EGA/VGA adapter in order to setup the ability to change fonts. If you will recall, the previous section discussed how to add the French language to your system. The examples, for this section will revolve around installing French on your system as well. DOS In your CONFIG.SYS, add the following: DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,437,2) In your AUTOEXEC.BAT, add these lines: NLSFUNC MODE CON: CP PREPARE=((437 850) C:\DOS\EGA.CPI) For additional information on DISPLAY.SYS, NLSFUNC, and MODE please refer to your DOS manual. If you are running multiple nodes under DESQview, you should be aware that the font support is a little unpredictable in that the font changes in one node may show up in another node's display instead. In addition, Microsoft Windows will not show the font change, unless you are running in a full-screen window. OS/2 In your CONFIG.SYS add the following: CODEPAGE=437,850 OS/2 does a good job of displaying fonts. You can easily have two separate windows using two different fonts. For additional information on using the CODEPAGE line in your CONFIG.SYS, please refer to your OS/2 manual. Multiple Languages And Caller Logs The PCBTEXT file contains almost all of the text that is written to the caller log files. If you have several languages available on your system, you may find it difficult to interpret the information written to the caller log because it would be written in the language chosen by the user. To help ease the reading of the log files, PCBoard will use the entries from the default PCBTEXT file (the one with no file extension) when writing to the log files. This means all of the entries will be the same for your callers no matter what language they select. Menus There are several hooks in PCBoard where you can use a menu instead of the normal input. By using menus, you can help distribute the information presented to the caller so they do not become overwhelmed with the choices available at any one prompt. You can access doors, bulletins, script, and more from within the menu. Creating A Menu To create a menu, you need to create what is called an MNU file. To create this type of file, you need to use the MKPCBMNU program that is included with your package. To create or edit a MNU file, specify the MNU file to edit on the command line. For example, if you wanted to edit or create C:\PCB\MNU\MAIN.MNU, type the following at the DOS prompt: MKPCBMNU C:\PCB\MNU\MAIN.MNU If you do not specify a filename to edit, the usage screen will be shown to you which shows you how to specify a MNU file to edit. If you specify a valid filename to edit or create, the MKPCBMNU program will be loaded. If the filename you specify already exists, you will be able to edit the contents of that file. If the file does not exist, you will be creating a new MNU file. You will see that the first screen has three fields. To access the rest of the fields, press F2 to toggle between the various configuration screens. Title In this field, enter the title or name of this menu. This will be used for the prompt after each menu is displayed. For example, if you enter a title of FILE, you will see the following prompt at the end of the menu: FILE Menu Command ('MENU' for options) The rest of the prompt can be configured to read however you wish by using MKPCBTXT.EXE to edit record #682 in your PCBTEXT file. For example, you may want for it to say FILE Selection ('MENU' for options) in which case you would edit record #682 in PCBTEXT to look as follows: @OPTEXT@ Selection ('MENU' for options) As you can see, the @OPTEXT@ in the prompt is replaced by whatever you enter as the title for the prompt. Display File This is the file you want to display for the menu. This file should list all of the options that are available in this menu. As with virtually any other file that PCBoard displays, you can make security, graphics, and language specific versions of this display file. When a user is in novice mode, this file will be displayed each time before they are asked to make a selection. When in expert mode, the only way for a user to be able to view this menu is to type MENU when prompted for input. Help File Keeping in line with PCBoard's extensive online help system, you can have help files for each menu that you create. Simply enter the filename you wish to display when a ? is entered at your prompt for the menu. Instead of the ? a user could also enter H, HE, HEL, HELP unless you have replaced those commands in your menu. Menu Prompts There is a default prompt in PCBTEXT (record #678) that is used by all menus. It may not meet your needs for every menu though. However, since it is used by all menus, it cannot easily be modified by MKPCBTXT to handle different situations without making it worthless for other menus. Because of this, you can create different custom language prompts for each menu. MKPCBMNU allows the editing of 32 language specific menu prompts. The second screen in the menu editor (accessible by pressing F2) is where you define the multi-lingual prompts that you wish to use. Simply type in the way you want the input prompt to appear for each language defined. You will notice the first entry automatically has an extension of DEFAULT. This is the prompt displayed to the user if they have the default language. If you leave this blank, PCBoard will use the prompt from record #682 in your PCBTEXT file. In a previous example, you were shown how to change the prompt from @OPTEXT@ Menu Command ('MENU' for options) to @OPTEXT@ Selection ('MENU' for options). You could accomplish the same thing without modifying your PCBTEXT file. Instead, change the default prompt on this screen to look like the following: @OPTEXT@ Selection ('MENU' for options) To add other language specific prompts, press ALT-I. In the extension field, type in the extension you would like to replace the prompt for. Press TAB to go to the MNU Prompt field and type in the prompt for that language. If a prompt cannot be found for the current language, the default prompt will be used. Defining Options The final configuration screen is where you define the menu options that will be available. Keyword: This is the command you want to define. You can enter any command name up to 8 characters in length. This means you are not limited to single letter commands, but you may certainly use single letter commands if it will make it easier for your users. Sec: In this field you need to enter the minimum security level required to access the command you are defining. You may enter any value between 0 and 255. Type: Each menu option can be of a certain type. In other words, one menu option may execute a door program, while another may display a bulletin. The following list details each of the types you can assign to a command. BLT This option type enables you to display any bulletin that is defined in the current conference. In the Parameters field, enter the number of the bulletin you wish to display. BYE This option is identical to using the BYE user command available in PCBoard. This option skips any warnings or questions at logoff. By default, this menu option is available in every menu you create, unless you override the command in your menu definition. CONF This option type enables you to change the conference number. In the Parameters field, specify the conference name or number you wish to join. DIR You can display any of the file directories available in the current conference. Specify the directory number you wish to display in the Parameters field. DIS If you want to disable a menu option without actually deleting it from the list of options available, use this option. DOOR If you want to execute a door application from a menu, you may do so using this option type. Only the doors normally available in the current conference will be available for execution. Specify the door number or name to execute in the Parameters field of the option you are defining. EXIT While this option type is similar to QUIT, it is different because it will quit all active menus. FILE If you want to display a text file to the caller, you may do so using this option type. As with normal PCBoard display files, you can create security, graphics, and language specific versions of the file you are displaying to the caller. In the Parameters field, specify the path and filename to display. GBYE This option is identical to the G user command available in PCBoard. By default, this command is available in every menu that you create, unless you use define G to perform some other action in your menu. MENU If you have assigned a menu command to have this type, you can load another MNU file as specified in the Parameters field. This would effectively let you create a sub-menu type system that is very easy to navigate. PPE Using this option, you can execute any PPE file you wish. This only further enhances the options or tasks you can perform with each menu. QUIT To quit the current menu and return to the previous menu (if any), define a menu option that uses this option type. Remember that only the current menu will be exited. To exit all menus, use the EXIT option instead. SCR Execute a script file. The script number to execute should be specified in the Parameters field. For example, if you want to execute script #3 in the current conference for a particular menu option, set the type of the option to SCR and in the parameters field, enter 3. SFNR To increase the capability of MNU files, this option type enables you to stuff any text into the keyboard. The text to stuff comes from the file specified in the Parameters field. Stuffing the keyboard will make it appear the user typed in the text when in reality it is your menu. Once the stuffed text has been acted upon, the user will not be returned to the menu file. SQNR Stuff the keyboard with the text entered in the Parameters field. The text that is stuffed will not be displayed on the screen. Additionally, the user will not be returned to the menu once the stuffed text has been acted upon. SSNR Stuff the keyboard with the text entered in the Parameters field. Once the stuffted text has been acted upon, the user will not be returned to the menu. STFF Stuff the keyboard with the contents of the file specified in the Parameters field. Once the stuffed text has been acted upon, the user wiill be returned to the menu. STFQ Stuff the keyboard with the contents of the file specified in the Parameters field. The stuffed text will not be shown on the screen. STFS Stuff the keyboard with the text entered in the Parameters field. To represent the user pressing ENTER, use ^M where ENTER would normally be used. Once the stuffed text has been acted upon, the user will be returned to the menu. XPRT Using this option, you can toggle expert mode status or explicitly state if you want expert mode on or off. In the Parameters field, simply enter ON, OFF, or TOGGLE based on the action that you wish to perform. Parameters: In this field, enter any parameters required for the option type that you are defining. For example, if you use the STFF option type, you need some way to specify the filename that you want to stuff the keyboard with. In the Parameters field, enter the filename that you want to display. The description for each option will inform you if you need to enter anything in the Parameters field. NOTE: There are some commands that are available with every menu even if you do not have them actually defined in your MNU file. The following lists all of the default commands in all menus: ?, H, HE, HEL, HELP - Displays the help file for this menu (if it exists) ME, MEN, MENU - Displays the menu file which shows menu options available Q - Quit the current menu and return to the previous menu (if applicable) X - Exit all menus. G - Logoff the system. Warnings will be displayed at logoff BYE - Logoff the system. Warnings will not be displayed. The only commands that you cannot change or create are the top two items in the list which display the help files and display file for the current menu. All the rest of the options have option types you can assign to other commands. Adding Menu There are three way you can install a menu file into PCBoard. They are as follows: Menu display files (e.g., BRDM, CNFN) Most display files (e.g., WELCOME, NEWS) CMD.LST (PCBSetup | File Locations | Configuration Files) Virtually any PCBText Entry Using these methods, you should be able to install a menu into virtually any area in your bulletin board system. This means you can install a menu file virtually anywhere in PCBoard. The following sections describe the various methods you can use to install a menu. Menu Display Files The most common place for you to insert a menu is when the user is going to be prompted for input. If you have a lot of conferences on your system, chances are that your users will have difficulty deciding the conference to join. By using menu files instead of a single display file, you can help your users find what they are after. The following lists some likely candidates for installing menus by adding a .MNU on the name of the menu display file: BRDM (PCBSetup | Conference Configuration) - Displayed at the conference command prompt, but only when in novice mode, or when the MENU command is used. CNFN (PCBSetup | File Locations | Display Files) - Displayed when a user uses the J user command. DOORS (PCBSetup | Conference Configuration) - Displayed when a user uses the OPEN or DOOR user command. BLT (PCBSetup | Conference Configuration) - Displayed when the B user command is executed. SCRIPT (PCBSetup | Conference Configuration) - Displayed when the S user command is executed. DIR (PCBSetup | Conference Configuration) - Displayed when the F user command is executed. For any of these display files, you can create a menu file that will be used instead by adding a .MNU extension on the filename. For example, to create a menu for your conferences, follow these steps: Look at the location of your CNFN file (PCBSetup | File Locations | Display Files). You may see C:\PCB\GEN\CNFN. In this case, you would create a MNU file called CNFN.MNU and store it in the C:\PCB\GEN\ subdirectory. Use MKPCBMNU to create the C:\PCB\GEN\CNFN.MNU file. Follow the instructions for creating a menu as outlined previously. When you have finished defining your menu file, save it. Now whenever you type in J and press ENTER you will notice your menu file is being used instead of the normal display file. The most important thing to remember, is the menus are only used when the normal display file would have been used. If a user were to type J;3 your menu will never be used because the conference menu would not have normally been displayed by PCBoard. Likewise, if you replace the BRDM file with a BRDM.MNU, it will only be used when the BRDM file would have been normally been displayed. This means that if a user is in expert mode, they will not see the menu, because the main menu is not normally displayed to them. However, if a user in expert types MENU, your menu file will be used. CMD.LST In the CMD.LST file (PCBSetup | File Locations | Configuration Files) you can add new commands to your system. The commands you define in this file will only be available from the conference command prompt. If you edit your CMD.LST file, you will see a screen which resembles the following: File Locations Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) You can add a MNU file by specifying the command you want to use for the menu, the security level required to execute the command, and the actual location of your MNU file. For example, if you want to add a command called ORDER which will put the user into a menu system where you could help them make purchasing decisions, add the following entry: File Locations Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) ORDER 0 F:\PCB\MENUS\ORDER.MNU PCBText Entry Instead of displaying a PCBTEXT record, you can have use a menu file instead. To use a menu file, begin the PCBTEXT record with a $ followed by the name of the menu filename that you want to use. For additional information, refer to the PCBText Utilities section in the Utilities chapter of this manual. Adding Commands One of the requirements of a bulletin board system is that it be customizable to meet the needs of your users. PCBoard gives you the ability to add new commands to the system. You can define these new commands to do the following things: Open a door - When you define a door, you must give it a name. You can execute this door by typing entering the door name at the conference command prompt. There is no need to use the OPEN or DOOR user commands. This method enables you to add the door name to your main menu making it appear as a command on your system. Stuff the keyboard - Sometimes you may want to make things easier for your users by combining commonly used commands into one single command. For example, if your users have a hard time remembering that R;Y;ALL would read their own mail, create a command called YOURMAIL which stuffs the keyboard with R;Y;ALL. Run a PPE - A PPE can be generated by the PPL Compiler or by downloading a pre-compiled PPE. Execute a menu file - If you want to run a menu file as a new command, specify the menu file you wish to execute. All new commands you add to your main menu (with the exception of doors) need to be added using the CMD.LST file (PCBSetup | File Locations | Configuration Files). Stuffing Text Into The Keyboard Perhaps the most common way to add a new command is to stuff text into the keyboard buffer. Using this method you can create commands based on common things your users may do. In the CMD.LST, specify the text to stuff in the right-most field on the screen (PPE/MNU File -or- Keystroke Replacement.) The text you specify will stuffed into the keyboard buffer as if the user entered it directly from their keyboard. For example: Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) # 0 D;ALLFILES.ARJ;N^M This entry defines the # command. When this command is executed, the commands necessary to download ALLFILES.ARJ are executed. In addition the ;N is added which will force PCBoard to use the (N)one protocol. In essence, this will force a protocol to be picked for transfer even if a default protocol has already been selected. There are two things you need to be aware of when stuffing the keyboard. To simulate pressing ENTER add a ^M to the text that you are stuffing into the keyboard buffer. In addition, you need to realize that any text you stuff into the keyboard buffer will be lost if you run a door. If you need to stuff more characters than are available in the field, you should stuff a file instead. Stuffing A File To The Keyboard To specify that you wish to stuff an ASCII text file instead of the text, enter a % followed by the filename you wish to stuff. For example, if you wished to create a command called VIEW that will stuff the text file C:\PCB\TEMP\STUFFIT.TXT, add this entry: Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) VIEW 0 %C:\PCB\TEMP\STUFFIT.TXT Stuffing the keyboard buffer with a file is virtually identical to stuffing the keyboard buffer with text (described in previous section) with the following exceptions: You may stuff as many characters as necessary. When stuffing text, you are limited to 256 characters. However, with a file, all of the text inside the file will be stuffed. Instead of using ^M to represent ENTER, press ENTER when you are creating your ASCII file to stuff into the keyboard buffer. If you were to stuff S^M2^M when stuffing text, the ^M will be converted to carriage returns. If you were to stuff the same text from a file, it will resemble the following: S 2 Using A PPE File To specify the command to execute a PPE file is very simple. All you need to do is specify the new command, the security level required to execute the command, and finally the name of the PPE filename to execute. For example, to create a command called STATS which will execute C:\PCB\PPE\STATS.PPE, make the following entry: Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) STATS 0 C:\PCB\PPE\STATS\STATS.PPE Using A Menu File You can add a MNU file by specifying the command you want to use for the menu, the security level required to execute the command, and the actual location of your MNU file. For example, if you want to add a command called ORDER which would put the user into a menu system where you could help them make purchasing decisions, add the following entry: File Locations Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) ORDER 0 F:\PCB\MENUS\ORDER.MNU Replacing Existing Commands Using the CMD.LST file, it is possible for you to override PCBoard's internal commands. The commands defined in CMD.LST have the highest priority of any command or function in PCBoard. Even when you override a command, you can still access the original internal command as strange as that might sound. As a very simple example, add the following entry to your CMD.LST file: Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) N 0 N As you can see, this will stuff N into the keyboard buffer when the user executes the N user command. If you login and execute then N command you will notice it is identical to before you implemented the change. If you want to make sure everything is working properly, modify your N command in CMD.LST so it looks like this: Command Security PPE/MNU File -or- Keystroke Replacement -------------- -------- --------------------------------------- 1) N 0 N;S If you login and execute the N command, you will not be prompted for the date. Instead, you will be asked immediately for the directory numbers you wish to search through. This is because the internal N command is still being used. The Look And Feel Of Your BBS PCBoard uses several display files and hundreds of text records (PCBTEXT) to display information to the caller of the system. Each of these display files and nearly all of the text records can be modified to your liking. Without a doubt, you will spend a large amount of your time customizing your bulletin board system to suit your needs and to help differentiate your system from the other bulletin board systems. This section describes some of the ways you can customize the look and feel of your system. Colorizing Screens To help enhance the presentation of your display files, PCBoard will allow you to create graphic specific versions of all of your display files by adding a G to the end of the filename to be displayed. For example, if you use a file called WELCOME and you want to create a graphics specific version of the file, create a file called WELCOMEG. These graphic specific files are usually created using either ANSI codes or @X color codes. There are several ANSI screen and @X editors such as PCBEdit (included with PCBoard). Simply use the editor program to create your file and save the file using ANSI or @X codes. Despite the fact that you can create graphic specific files, you may not want to create both a non-graphic and graphic version of the same file. With the @X code format, PCBoard can analyze the file and will omit the color information in the file if the caller is not in graphics mode. By making just one version of the file, you can save a lot of maintenance time and probably a significant amount of disk space. Editing PCBText Records Because most of the text that PCBoard displays comes from the PCBTEXT file (for each language) you can put a great deal of time into customizing the PCBTEXT records. Each PCBTEXT record varies in length up to 79 characters. There are nearly 700 records in the PCBTEXT file that you may customize to fit your own needs. To edit the PCBTEXT file, use a utility called MKPCBTXT.EXE which is included with your package. This utility will enable you to edit each record in the PCBTEXT file to say whatever you want it to display. If you browse through the various records, you may notice what appears to be duplicate records which contain the same text. One record is displayed to the user when they are in novice mode, and the other record is displayed when the user is in expert mode. The best way to determine which is which is by trial and error -- there is no set method. To increase the flexibility of each PCBTEXT record, there are some special characters you can use at the beginning of a line to signify you would like to do something other than display the record text. For example, if you begin a record with a % followed by a filename, PCBoard will display the filename instead. This enables you to break the record length limit in case you need to display additional text. The screen on the following page is a sample record showing you what it would look like to display a filename instead: You can also elect to execute a menu rather than displaying a particular record. This can be done by starting the line with a $ followed by the MNU file that you wish to use for your menu. If you have a PPE file that you wish to execute in place of a normal record you may do so by beginning the record with an ! followed by the filename of the PPE to execute. NOTE: There are some records that are built by PCBoard on the fly and therefore cannot use the %, $, or ! characters as the first line. A good example would be record #609 in the PCBTEXT file which displays the credits that are rewarded to a user after uploading. PCBoard replaces the 0 in that record with the appropriate values, hence it builds the record before displaying it to a user. If you use %, $, or ! as the first character, it will be ignored. For more information on MKPCBTXT, refer to the Utilities chapter of this manual. PPE Files Perhaps the greatest way to customize how your bulletin board system operates is to use PPE files. You can use PPE files in the following places: In a PCBTEXT record as described in the previous section In place of a standard script questionnaire file simply by specifying the filename of the PPE (including the PPE extension) in SCRIPT.LST. In place of any menu display file (BRDM, CNFN, DIR, BLT, etc.) by creating a PPE file using the base name. For example to execute a PPE file instead of displaying the normal menu, create a file called BRDM.PPE in the same location as BRDM. Within any display file by beginning a line (column 1) with an ! followed by the filename of the PPE to execute. From a menu selection as defined in a MNU file. A PPE (PCBoard Programming Executable) file is simply the compiled version of a PPL file. In order to compile your own PPE file you will need to purchase the PPL Compiler which is an optional add-on to your PCBoard software. If you have any background in BASIC or batch file programming, you should be able to easily understand the PPL language. Configurable Online Help PCBoard uses standard text files for its context sensitive help system. Therefore, you may modify the files that make up the help system to suit your needs. Your help files will be located in the directory you specified in the Location of Help Files (PCBSetup | File Locations | System Files). The following lists the help files names that are included with PCBoard and a description of the command or function that they provide assistance with. HLP! (!) Repeat command HLPA (A)pandon a Conference HLPALIAS (ALIAS) enable/disable HLPB (B)ulletins HLPBR (BR)oadcast another node HLPC (C)omment to SysOp HLPCHAT (CHAT) or (NODE) commands HLPCMENU Menu available by pressing E while in chat. HLPD (D)ownload file(s) HLPE (E)nter a message HLPENDR Options available at the End of Message Command prompt. HLPF (F)ile directories HLPFLAG (FLAG) a file for download HLPFSCRN Full-screen editor (entering a message) HLPG (G)oodbye HLPH (H)elp HLPI (I)nitial Welcome HLPJ (J)oin a conference HLPK (K)ill a message HLPL (L)ocate a file HLPLANG (LANG) Change active language HLPM (M)ode of graphics (if any) HLPN (N)ew file scan HLPNEWS (NEWS) Online news HLPO (O)perator Page HLPOPEN (OPEN) a (DOOR) HLPP (P)age length setting HLPQ (Q)uick message scan HLPQWK (QWK) mail transfers HLPR (R)ead a message HLPREG Set conference registrations (within user record edit) HLPREP (REPLY) to a message HLPRM (RM) Re-read memorized message number HLPS (S)cript questionnaire HLPSEC Message security (when entering a message) HLPSEL (SELECT) conferences to include in message scan Scan for prompts. HLPT (T)ransfer protocol HLPTEST (TEST) a file that is available for download. HLPTS (TS) Search messages for text HLPU (U)pload a file HLPUSERS(USER) Display list of users on the system HLPV (V)iew user statistics HLPW (W)rite personal information HLPWHO (WHO) is currently online HLPX (X)pert mode toggle HLPY (Y)our mail scan HLPZ (Z)ippy search the file directories. Display File Conventions Display Filename Conventions With virtually any filename that PCBoard displays to the caller, you can send different versions of the file based on: the security level of the user the current language the graphics mode (if any) being used Base Filename Before you can understand how this works, you must know what PCBoard calls a base filename. The base filename is what you enter for the filename in a PCBSetup location. Look at the following example: Name/Loc of Conference Join Menu : C:\PCB\GEN\CNFN In this example, the filename is CNFN and hence it is the base filename. By creating new files which have special characters added to the filename, you can make special versions of the display files for a restricted group of users. These special characters are described below: Language Specific To make a display file for a particular language make the filename extension equal to the filename extension of the language as listed in your PCBML.DAT (PCBSetup | File Locations | Configuration Files). BASE.LAN | | base filename----+ +-------language extension Remember, that the default language does not have a file extension. Therefore, you would use the base filename with no file extension specified. Security Specific If you want to make a file only viewable by a particular security level, you may do so by adding the security level to the base filename. For example, if you wanted to create a BRDM file that is only displayed to users with a security level of 40, create a new file called BRDM40. BASE### | | base filename---+ +----- Security level Graphic Specific PCBoard supports two different graphics specific files -- ANSI and RIPscrip. To make separate files for the users that are currently using graphics mode on your system is very easy. Simply add a G to the base filename for ANSI specific files and an R to the base filename for RIPscrip files. For example, if you wanted to create a version of the BRDM for those users who have graphics mode enabled, create a file called BRDMG. BASEG | | base filename----+ +---- specifies file is for graphics mode only Likewise, if you want to create a file that would be viewed by those in RIPscrip mode, you would create a file called BRDMR. BASER | | base filename----+ +---- specifies file is for RIPscrip mode only If the user is in RIPscrip mode, but a RIPscrip version of the file does not exist, PCBoard will attempt to find an ANSI specific version of the file (because RIPscript also supports ANSI). If no ANSI file is found, the base filename is used. Combining You are not limited to using one specific method. For example, you can make graphics and non-graphic versions of security specific files. Look at the following figure: BASE###G | | | base filename----+ | +---- specifies this file security is for graphics only Taking this one step further, you could even make this file language specific as illustrated in the following example: security | +--- language | | BASE###G.LAN | | base filename ---+ | graphics specific Order Of Language, Security, and Graphic Specific Files In order to properly use language, security, and graphic specific files, you need to understand the process that PCBoard goes through in case the specific file does not exist. PCBoard will use the most specific file that it can find. For example, you may have the following specific versions of your NEWS file: NEWS NEWS10 NEWS20 NEWS20G NEWS.SPA For this first example a user logs into the system selecting the default language, and the user also selects graphics mode. This particular user has been assigned a security level of 20. When the NEWS file is displayed to the caller, PCBoard checks to see what language the user selected. In this case, the user selected the default language so no language specific files will be looked for. Now, PCBoard checks to see if there is a security specific version of the file. Upon searching, security specific files are found for levels 10 and 20. Because this user has a security level of 20, PCBoard must display either the NEWS20 or NEWS20G file. Of course the final check is for the graphics mode of the caller. If you recall, this user selected graphics mode so the NEWS20G file will be shown. The caller hangs up and calls back again. This time, the caller selects language which happens to have an extension of SPA defined in the PCBML.DAT file. The news file is displayed to the caller only this time, the user has selected a language other than the default. PCBoard begins by checking to see if there are any language specific files. In our list of NEWS files, there was a file called NEWS.SPA. This was the only file with the SPA extension. Therefore, PCBoard will stop there since there are no security or graphic specific versions of the NEWS file with an SPA extension. This means that the caller will be shown the NEWS.SPA file. For the final example, another user calls into your system. This caller selects the default language and chooses to enable graphics mode. This caller has been assigned a security level of 25 on your system. When the NEWS file is displayed to the caller, PCBoard does not check for language specific files because the caller choose the default language. Next, PCBoard searches for security specific files but only security specific files for levels 10 and 20 are found. Since there were no language or security specific matches, PCBoard will check for a graphics specific file (NEWSG). However, that file does not exist, so the NEWS file will be displayed instead. All Possible Specific Files The following examples will help better illustrate the various files that you can create to make specific files based on language, security level, and graphics mode. If PCBoard is going to display the following text file: C:\PCB\GEN\BRDM You can create the following language, security, and graphics specific versions of that same file: BRDM BRDMG BRDMR BRDM### BRDM###G BRDM###R BRDM.LAN BRDMG.LAN BRDMR.LAN BRDM###.LAN BRDM###G.LAN BRDM###R.LAN Remember, the ### in each of these examples represents a security level. Therefore, you could conceivably have 255 different security specific files if you have defined all 255 security levels. In addition, the .LAN represents the language extension. You can define multiple languages in your PCBML.DAT file so you would replace the .LAN with whatever language you want to make the display file for. PCBoard @ Macros In some of your display files you may want to display information that is specific to the caller currently viewing the file (e.g., name, connect speed, node number, etc.). Another possibility is that you may want to control the display of some of your files so that they pause at a particular point. PCBoard uses @ macros to help you accomplish these tasks. These macros are special codes that you can enter in text files to make PCBoard display certain information or perform a particular action. All macros must begin and end with the @ character with the text between being in uppercase. The following groups the macros into sections. Following the brief summary is a list of all @ macros in alphabetical order for easy reference. Action Related Macros @AUTOMORE@ Subsequent more prompts are treated as @PAUSE@. @BEEP@ Send a beep to the caller. @CLREOL@ Clear all text on the current line to the right of the cursor. @CLS@ Clear the screen. @DELAY:nn@ Pause for the nn tenths of a second. @HANGUP@ Disconnect the caller. @MORE@ Interrupt display asking caller if they wish to see more. @PAUSE@ Same as @MORE@ but continues after 10 seconds. @POFF@ Disable normal more prompts when screen fills up. @PON@ Enable normal more prompting usage. @POS:nn@ Advance cursor to position nn. @QOFF@ Do not allow the display of the file to be aborted. @QON@ Allow the file display to be aborted. @WAIT@ Interrupt display of file with a Press Enter prompt. File Transfer Related Macros @BYTELIMIT@ Number of bytes that can be downloaded on a daily basis. @BYTERATIO@ Current byte ratio of caller. @BYTESLEFT@ Number of bytes user can download during current call. @DAYBYTES@ Number of bytes downloaded today. @DLBYTES@ Total number of bytes downloaded by the caller. @DLFILES@ Total number of files download by the caller. @FILERATIO@ Current file ratio of the caller. @KBLEFT@ @BYTESLEFT@ expressed in kilobytes. @KBLIMIT@ @BYTELIMIT@ expressed in kilobytes. @NUMDIR@ Number of file directories in current conference. @PRODESC@ Description of the default protocol selected. @PROLTR@ Default protocol selected by the current caller. @UPBYTES@ Total number of bytes uploaded by the caller. @UPFILES@ Total number of files uploaded by the caller. Message Related Macros @CURMSGNUM@ Current message number being read. @HIGHMSGNUM@ High message number in message base. @LMR@ Last message read by user in the current conference. @LOWMSGNUM@ Low message number in the message base. @MSGLEFT@ Total number of messages entered by the user. @MSGREAD@ Total number of messages read by the user. Miscellaneous Related Macros @BOARDNAME@ The name of the bulletin board system. @CONFNAME@ The name of the current conference. @CONFNUM@ The number of the current conference. @EVENT@ The time that the next event is scheduled to take place. @FREESPACE@ Bytes available for uploading in the current conference. @INCONF@ Current conference number and name. @LASTCALLERNODE@ The last user that called the current node. @LASTCALLERSYSTEM@The last user that called the system. @NODE@ The current node number. @NUMBLT@ The number of bulletins defined in the current conference. @NUMCALLS@ Total number of calls answered by the BBS. @OFFHOURS@ Hours that lower speed callers can call into the system. @OPTEXT@ Used in PCBTEXT to transfer information by PCBoard. @SYSDATE@ The current system date. @SYSOPIN@ Beginning time when the SysOp is available for chat. @SYSOPOUT@ Ending time when the SysOp is available for chat. @SYSTIME@ The current system time. @WHO@ Prints a list of who is currently online. User Related Macros @BPS@ Carrier speed of caller as reported by PCBoard. @CARRIER@ Carrier speed of caller as reported by the modem. @CITY@ Information entered in the city field of user's record. @DATAPHONE@ Information entered in the data phone field of user's record. @EXPDATE@ Expiration date of the caller. @EXPDAYS@ Number of days until the user's subscription will expire @FIRST@ First name of caller displayed in mixed case. @FIRSTU@ First name of caller displayed in all upper case. @HOMEPHONE@ Information entered in the home phone field of user record. @LASTDATEON@ Last date the caller called the system. @LASTTIMEON@ Last time the caller called the system. @MINLEFT@ Minutes left on system (includes download time estimates). @NUMTIMESON@ Number of times user has called the system. @SECURITY@ Current security level of the caller. @TIMELEFT@ Minutes left on system (excludes download time estimates). @TIMELIMIT@ The daily/session time limit of the caller. @TIMEUSED@ Total number of minutes used during current call. @TOTALTIME@ Total number of minutes used during current day. @USER@ The caller's name displayed in uppercase. Formatting @ macros With the exception of the Action Related @ Macros, you can apply the following formatting to any macro: The total number of characters used to display the macro. This is commonly referred to as the maximum field length. Whether the text should be center, right, or left justified when a maximum field length is specified. To specify a maximum field length for a macro, enter a colon followed by the field length before the last @ of the macro. For example, if you wanted to display the user's name in a 30 character field, enter the following macro: @USER:30@ Text is normally left justified in a field. If you want the text to be right or center justified, add a special character after the field length. To make the text in the field right justified, add an R to the field length. To make the text center justified, add a C to the field length. For example, to make the user's name in the previous example center justified, enter the following instead: @USER:30C@ To make the same display right justified, enter: @USER:30R@ Alphabetical List Of @ Macros The following table lists all of the @ macros that PCBoard will allow you to use. The list is arranged in alphabetical order for easy access. @VARIABLE@ Description / Sample @##@ When entered in the TO: field of a message, you may address a message to a particular security level. You should replace the ## with the actual security level you wish to address the message to. This macro may only be used in the TO: field of a message. Example: @20@ @##-##@ When entered in the TO: field of a message, you may address a message to a range of security levels. You should replace the first ## with the lowest security level to address the message to. The second ## should be replaced with the highest security level to address the message to. This macro may only be used in the TO: field of a message. Example: @20-35@ @AUTOMORE@ Any More? prompts displayed after this macro will be interpreted as @PAUSE@ codes. If the user does not respond to the More? prompt within 10 seconds, the default of Y is accepted. @BEEP@ This macro sends an audible tone ( CTRL-G ) to the remote caller. In order for you to hear this audible tone, you must have the Bell turned on at the call waiting screen. @BICPS@ Used internally by PCBoard to display file transfer statistics. @BOARDNAME@ Displays the name of the BBS. This information is stored in PCBSetup | Node Information @BPS@ Displays the connect speed that PCBoard announced at login. For error-correcting connections, the opening port speed will be displayed. Otherwise, the actual carrier speed will be displayed. If you want to always display the carrier speed of the caller, use the @CARRIER@ macro instead. Example output: 38400 @BYTELIMIT@ Displays the daily download byte limit of the caller. Example output: 737,280 @BYTERATIO@ Displays the byte ratio for the current caller. The format for the output is downloads:uploads. For example, if a caller has downloaded 10,000 bytes and uploaded 2,000 bytes, they have a 5:1 byte ratio. In other words, for each five bytes they download they have uploaded one byte. Example output: 5:1 @BYTESLEFT@ Displays the number of bytes the caller has left for the day. If the caller has been given unlimited downloads, the word Unlimited will be displayed instead of the actual amount of bytes. Example output: 325,567 @CARRIER@ Displays the connect speed of the caller as returned by the modem. If the user is on via a local login, the opening port speed is reported. Example output: 14400 @CITY@ This macro will display the caller's city. This information is stored inside of the user file in the City field. Example output: MURRAY, UT @CLREOL@ Clears the current text line to the end of the line (the last column on the display screen). This is useful if you want to make sure there is no other text to the right of the @CLREOL@ macro or if you are using a background color in your color displays and want to have it extend to the end of the text line. @CLS@ Clears the screen (i.e., no information is displayed on the screen immediately after this macro is used). @CONFNAME@ Displays the current conference name. This is quite similar to the @INCONF@ macro except it does not display the conference number. Example output: Main Board @CONFNUM@ Displays the current conference number Example output: 3 @CURMSGNUM@ Displays the last message number the caller read, not necessarily the highest message number the caller has read. For example, if the caller had read to message number 532 but decided to go back and read message number 1, this macro would display 1 because that is the last message the caller actually read. Example output: 32,322 @DATAPHONE@ This macro will display the business/data phone number stored in each user record. The actual text is not formatted -- it is taken straight from the user record. Example output: 801-261-8976 @DAYBYTES@ Displays the number of bytes downloaded on the current day. If the value displayed is negative, the caller has been given credit for an upload. Negative bytes are added to the daily byte limit of the caller. For example, if you used this macro and it displayed -52,322, that would mean that the caller could download 52,322 bytes in addition to their normal daily limit. Example output: 332,356 @DELAY:nn@ Delays for nn tenths of a second. If you enter @DELAY:50@, PCBoard will pause for 5 seconds (50 * .10 = 5.0). You can enter any value between 0 and 255 meaning that you can pause between 0 and 25.5 seconds. @DLBYTES@ Displays the total number of bytes that the caller has downloaded from the system. Example output: 2,352,532 @DLFILES@ Displays the total number of files the caller has downloaded from the system. Example output: 1,054 @EVENT@ Displays the time (in 24 hour format) that the next system event will run. If you do not have your system scheduled to run an event or no events are defined, the time displayed will be 00:00. Example output: 14:30 @EXPDATE@ This macro will display the expiration date of the current caller. If a user has no expiration date or if you have disabled subscription mode, 00-00-00 will be displayed. Example output: 08-30-94 @EXPDAYS@ Displays the number of days until the caller's subscription will expire. If the user does not have an expiration date or you have disasbled subscription mode, nothing will be displayed on the screen. Example output: 325 @FILERATIO@ Displays the file ratio for the current caller. The format for the output is downloads:uploads. For example, if a caller has downloaded 150 files and uploaded 30 files, they would have a 5:1 file ratio. In other words, for each five files they download, they have uploaded one file. Example output: 5:1 @FIRST@ This macro will display the first name of the caller. When the caller's first name is displayed, the first letter will be capitalized and all subsequent letters in the first name will be lower case. Example output: Stanley @FIRSTU@ This macro will display the exact same information as @FIRST@ only the first name will be displayed in all upper case letters. Example output: STANLEY @FREESPACE@ Displays the amount of drive space in bytes that are available on the private upload drive of the current conference. Example output: 122,346,098 @HANGUP@ This macro will disconnect the current caller. When the caller is disconnected, the number of minutes used and the Thanks for calling message will be displayed. This macro may only be used in display files but not in messages. In order for PCBoard to recognize this macro, it must begin at the first character of the line. @HIGHMSGNUM@ Displays the highest message number in the conference that the caller is currently in. Example output: 11,523 @HOMEPHONE@ This macro will display the business/data phone number stored in each user record. The actual text is not formatted -- it is taken straight from the user record. Example output: 202-555-1212 @INCONF@ Displays the conference name and conference number that the caller is currently in. In addition, the word Conference will be added to end of the conference name and number. The only exception is the Main Board conference which will simply display Main Board. If you do not want the word Conference to be added, use the @CONFNUM@ and @CONFNAME@ macros instead. Example output: Support (1) Conference @KBLEFT@ Displays the number of kilobytes the caller has available for the rest of the day. If a user has earned upload bytes, they will be added to their normal daily limit. Example output: 768 @KBLIMIT@ This macro will display the total number of kilobytes the caller is normally allowed to download each day. Example output: 2,048 @LASTCALLERNODE@ Displays the name and city of the last caller to the current node. Example output: JIM SMITH (ANYWHERE, USA) @LASTCALLERSYSTEM@ Displays the name and city of the last caller to the entire system (all nodes are searched). Example output: BOB JONES (ANYPLACE, USA) @LASTDATEON@ This macro will display the last date the caller was on the BBS. The current call will not be taken into account. Example output: 09-25-93 @LASTTIMEON@ This macro will display the last time the caller was on the BBS. The time is displayed in 24-hour format. This macro will not take the current call into account. Example output: 16:32 @LIST@ This macro will enable you to address a single message to a list of users on the system. You can only enter this macro in the TO: field when addressing a message. @LMR@ Displays the highest message number the caller has read in the current conference. This is sometimes referred to as the Last Message Read pointer and is stored inside of the user's record. Example output: 7,938 @LOWMSGNUM@ Displays the lowest message number in the conference the caller is currently in. Example output: 11,523 @MINLEFT@ Displays the total number of minutes the caller has remaining for this session. If a user has flagged files for download, the estimated time that it will take to transfer those files is reflected in the @MINLEFT@ macro. In other words, if a caller has 35 minutes left for the session and they flag 10 minutes worth of files, the @MINLEFT@ macro will display 25. If you do not want to take the flagged files into account, use the @TIMELEFT@ macro instead. Example output: 34 @MORE@ Displays a More? prompt. This is the same prompt that is normally displayed when the screen is full. You can manually insert a More? prompt to help control the display of a text file. Example output: (57 min left), (H)elp, More? @MSGLEFT@ Displays the number of messages the user has entered on the BBS system. This information is stored in the user record. @MSGREAD@ Displays the number of messages the user has read on the BBS system. This information is stored in the user record. @NODE@ Displays the node number the caller is currently using. Example output: 10 @NUMBLT@ This macro will display the total number of bulletins available in the current conference. Example output: 32 @NUMCALLS@ Displays the number of calls the BBS system has answered. Example output: 124,329 @NUMDIR@ Displays the total number of file directories available in the current conference. Example output: 60 @NUMTIMESON@ This macro will display the number of times the caller has called this BBS system. This number is stored in the user record. Example output: 365 @OFFHOURS@ This macro will display the hours you allow lower speed callers to call your system. All hour displays are listed in 24 hour format. These hours are defined in PCBSetup | Modem Information | Allowed Access Speeds. Example output: 01:00-06:00 @OPTEXT@ This macro is used throughout PCBTEXT to pass information from PCBoard into the records in PCBTEXT. You should only use this macro within those records that were designed to use @OPTEXT@. @PAUSE@ Displays a More? prompt. If the caller does not respond to the prompt within 10 seconds, the default value of Y will be assumed and the display will continue. Example output: (38 min left), (H)elp, More? @POFF@ Disables the More? prompt while displaying the file. If you use this command, make sure you use the @PON@ command at the end of the file to enable the more prompts again. @PON@ Enables the More? prompt while displaying a file. The default is to always display a More? prompt. However, if you use the @POFF@ macro, you will want to use the @PON@ macro to enable More? prompts again. @POS:nn@ Moves the cursor to position nn on the current line. If the cursor is already beyond the position entered, no action is taken. Otherwise, spaces are printed until the cursor reaches the position you specify. @PRODESC@ Displays the description of the default protocol the caller has selected. Example output: Zmodem @PROLTR@ Displays the protocol letter the caller has chosen for their default protocol. Example output: Z @QOFF@ This macro will disable CTRL-X / CTRL-K checking. Thismeans the caller will not be able to interrupt or abort the display of the file. Any More? prompts that are displayed after a @QOFF@ macro will be turned into Press (Enter) to continue? prompts because the caller cannot abort the display. @QON@ This macro will enable CTRL-X / CTRL-K checking. You should use this macro whenever you have turned off the checking and wish to turn it back on again. @RBYTES@ Used internally by PCBoard for file transfer statistics. @RCPS@ Used internally by PCBoard for file transfer statistics @RFILES@ Used internally by PCBoard for file transfer statistics. @SBYTES@ Used internally by PCBoard for file transfer statistics. @SCPS@ Used internally by PCBoard for file transfer statistics. @SECURITY@ Displays the security level of the user. Any security level adjustments added when joining a conference will be reflected in the value displayed. Example output: 60 @SFILES@ Used internally by PCBoard for file transfer statistics. @SYSDATE@ Displays the current date. Example output: 09-23-93 @SYSOPIN@ Displays the beginning time a user may page the SysOp for chat. This time is defined in PCBSetup | Configuration Options | Limits. All time displays are in 24-hour format. Example output: 18:00 @SYSOPOUT@ This macro will display the ending time a user may page the SysOp for chat. This time is defined in PCBSetup | Configuration Options | Limits.. All time displays are in 24-hour format. Example output: 17:00 @SYSTIME@ Displays the current time. All time displays are in 24-hour format. Example output: 15:32 @TIMELEFT@ Displays the amount of time the caller has left for this session. This macro does not take into account any files the user has flagged for download. If you wish to take flagged files into account, use the @MINLEFT@ macro instead. Example output: 32 @TIMELIMIT@ Displays the total time in minutes a user can use per day/session. This limit is defined in the PWRD file in PCBSetup. Example output: 60 @TIMEUSED@ Displays the number of minutes used during the current call. Example output: 12 @TOTALTIME@ Displays the total amount of time (in minutes) that the caller has used on the system for the day. Example output: 128 @UPBYTES@ Displays the total number of bytes the user has uploaded to the BBS. Example output: 36,928,674 @UPFILES@ Displays the total number of files that the user has uploaded to the BBS. Example output: 352 @USER@ This macro will display the full user name of the caller in all uppercase letters. You can also use this macro in the TO: field of a message. If you do, your single generic message will appear to each user to be addressed personally to them.. Example output: EDWARD B. SMITH @WAIT@ This macro will display a Press (Enter) to continue? prompt to the user. Of course, the only way to continue past this prompt is for the caller to press EMTER. @WHO@ This macro will display the exact same thing as if the user had typed WHO at the PCBoard command prompt. The display includes all active node numbers and who is on each of the respective nodes. NOTE: Once the @WHO@ macro is used, the page line counter is reset to maximize screen output. Therefore, if you put the @WHO@ macro in the middle of the screen, be aware that the top of the screen may scroll off. To prevent this, you should put an @PAUSE@ or an @MORE@ just before the @WHO@. Example output: (#) Status User --- --------------------- ----------------------------- 1 No Caller this Node 2 Unavailable for CHAT GREGORY GLENN (CHARLTON, ID) 3 Available for CHAT BRIAN LARSEN (FREEDOM, LA) 4 No Caller this Node 5 No Caller this Node 6 No Caller this Node 7 Entering a Message MILTA BARBOSA (ARMINE, NY) 8 Entering a Message HUGH MCDEVITT (ARROYO, CA) 9 Available for CHAT JACOB VANRIJ (OAKGROVE, ME) 10 No Caller this Node @X Color Codes In addition to supporting ANSI display files, you can choose to use PCBoard's @X color codes to colorize your display file and PCBTEXT prompts. If you choose to use ANSI to colorize your display files, you will need to create an graphics specific version of each display file in addition to the regular file. The @X codes are eventually translated to ANSI so the caller can view the color screens. Before this occurs, however, PCBoard will check to see if the caller is capable of ANSI. If they are, PCBoard will translate the color codes into ANSI. If they are not, PCBoard will bypass the color codes so the user does not end up seeing what appears to be garbage on their screen. Because PCBoard is smart enough to determine if the caller is capable of ANSI or not, you can create one single display file for both your ANSI and non-ANSI callers. This saves you time when creating and updating your display files. Included with your PCBoard package is a program called PCBEdit. This program should be used to create screens that are colorized with @X codes. You should also be aware that there are several other programs available as shareware which you can use to create screens in the PCBoard @X color code format. If you want to enter @X codes in message or if you manually create your display files, you will need to know the proper format for the @X codes. The format is as follows: @X[background value][foreground value] After you enter @X, you need to enter a background value, followed by a foreground value. If you look at the table which follows this paragraph, you will notice that it is broken down into two halves. One half shows the values for the background colors and the other half shows the values for the foreground value. Notice also that the background and foreground sections are also divided. Background colors can be set to be blinking or not, and foreground values can be set to be bright or normal (dull) versions of the color that is shown in the left column of the table. Background (1st Digit) Foreground (2nd Digit) Color Normal Blinking Normal Bright ------------------------------------------------------------- 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 Using the color code table you can quickly determine that by entering @X1F, you will be setting the current color to bright white text on a blue background. To help illustrate the color selection scheme, the following are sample @X color codes: @X07 - Dull white (gray) text on a black background @X47 - Dull white (gray) text on a red background @X0B - Bright cyan text on a black background @X8F - Bright white text on a blinking black background @XC7 - Dull white (gray) text on a blinking red background. Using @ Macros and @X Codes There are primarily three places in PCBoard where you can use @ macros and @X codes. They are: Display files Most PCBTEXT entries (some does not support @ macros or @X codes). Inside of messages left on the BBS. To use the macros or codes, simply enter them into the display file, PCBTEXT entry, or message editor in the proper format. If you do, the code or macro will be properly substituted. To help illustrate how to use macros and codes, this example is going to show you how to enter an @ macro and then to colorize the text that is displayed by the @ macro. Begin by logging into PCBoard as the SysOp and getting to the conference command prompt. Shell to DOS by pressing F5. You should now be at a DOS prompt. If you are not, you have disabled local shell to DOS in PCBSetup | Configuration Options | System Control. Using a text editor of your choice, edit a file called TUTOR in the current directory. In this file, enter @USER@ and save the file and exit your text editor. When you are back at the DOS prompt, type EXIT to return back to PCBoard. Now, type 6 TUTOR at the conference command prompt. You are using the 6 SysOp command which enables you to view any file on disk. Once the command is entered, you should see one line which prints your user name on the screen. Since you are the SysOp, it will print SYSOP instead of your user name. You will notice that if you log in as a different user, the user's name will be displayed on the screen. Next, we will colorize the name to help provide emphasis. Shell to DOS again, and edit your TUTOR file. In front of the @USER@, enter @X1F. After the @USER@, enter a space followed by @X07is the current user. Save the file, exit your text editor and type EXIT to return to PCBoard. View the TUTOR file using the 6 SysOp command. This time, you should see your user name in white text on a blue background. After your user name, the text changes back to gray on black and the is the current user is printed. Even though this example showed you only one of the places you can use @X codes and @ macros, you can apply the principles learned in this example to the other two places where you can use these flexible tools.