PCBCheck Advanced Upload Checker v.3.21 Feb 28, 1996 Jim Dahl ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 1. Mission and conception ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ I created PCBCheck (mainly for in-house use) when I was first exposed to the difficulty in setting up other PCBoard upload checkers. Creating a SETUP.CNF file and putting 50 seperate pieces of information on different lines in certain formats is not a nice way to set up a program! In fact, any program other than a BBS utility, would fail miserably if it required such an intricate setup. BBS utilities do not need to be so complicated to setup! Comments are very welcomed and bug reports are PROMPTLY addressed! ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 2. Features ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ As mentioned above, I believe the main feature of the program is its easy-to-use SETUP program! I also think PCBCheck has kind of a cool, modern PCBoard 15.2 look that others lack. Specific functions are: * Up to 10 user-configurable archivers, up to 5 user-configurable virus scanners (auto-configuration for McAfee's SCAN and F-PROT) * Easy-to-use SETUP program which dynamically adjusts its menus based on your system setup, selected options, installed archivers, etc... No wasted menu space, asks only those questions which affect you! It even sets up your PCBTEST.BAT file for you! * PCBCheck features advanced output which dynamically alters itself based on the type of upload, tests to be performed, etc... A few examples: When testing a GIF, a slot for resolution appears in the space normally used by the 'testing embedded archives' slot; when PCBCheck replaces the description with the FILE_ID.DIZ the change is reflected on the line of the description displayed on the screen, etc.... There will never be prompts which are irrelevant to the current upload displayed. * Flexible recognition criteria- using the 'allow unrecognized files', 'allow archives with non-standard extensions', and acceptable non-archive extensions list (wildcards allowed) you can tailor which uploads will be accepted to your specific needs. General features and abilities include: - FOSSIL, OS/2 comm. driver, and non-standard comm. port support - age checking based on percentage of files newer than specified date - scans embedded archives to any depth (as deep as path names allow) - FILE_ID.DIZ importing (autocorrects invalid FILE_ID.DIZ descriptions) - removes ANSI codes from descriptions - virus scanning using your virus scanner - GIF integrity scanning - convert all recognized archives to single type - can handle self-extracting archives - recognize archives with non-standard extensions - add file to archives - remove specified files from archives - check for bad 'keywords' in description to reject upload - compare upload name to 'trashcan' list for rejection - program or external errors noted in PCBCHECK.LOG - can send mail to sysop to inform him of program or external errors - add newest/oldest file dates and number of files to description - add GIF resolution to description - notify sysop by mail of uploads which may be virus infected - special RAM disk support to speed up operation - ability to use different background screens - registered version allows sysop to have his BBS name in title bar ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 3. Installation ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PCBCheck should be installed in it's own directory, preferably close to the root directory. DOS places limits on command and parameter lengths, and PCBCheck can often come dangerously close to those limits while executing complex archive/dearchive commands! Putting PCBCheck in a directory directly off the root directory gives it more room to play with by shortening the paths to PCBCheck data files. When PCBoard wants an upload checked, it calls PCBTEST.BAT in its home directory. SETUP will modify PCBTEST.BAT for you if it detects that PCBTEST.BAT does not already run PCBCHECK and you tell it that it is allowed to modify PCBTEST.BAT. Note that you may need to add a special parameter yourself. The command line for PCBCheck reads: X:\\PCBCHECK.EXE %1 %2 %3 port The optional parameter port (which SETUP leaves out by default) allows you to specify an address for PCBCheck to use for serial output. The default (nothing specified) is for PCBCheck to read PCBoard's PCBOARD.SYS to determine the COM port number, and then the COM port number is converted to its standard address. Particularly if you use COM3 or COM4 the address may not be the default. Also, you must use the [port] option if you wish to use a FOSSIL driver in lieu of the normal 8250 communications routines. Pass '#F' where # is the FOSSIL port, for example, to access COM1 via a FOSSIL driver you would pass '0F' as the port parameter (without the quotation marks, of course). Note that PCBCheck should be able to read the FOSSIL port number out of the PCBOARD.DAT, so you only need to pass the port parameter in special exceptions. Notice that the suggested PCBTEST.BAT does NOT change directories, rather calls PCBCheck from the current directory. That is very important! The reason is that PCBCheck looks for system files in that directory (PCBOARD.DAT and PCBOARD.SYS). Change directories to the PCBCheck directory you created earlier and run SETUP. This document explains the various features of SETUP later. I strongly recommend all PCBCheck users have SHARE installed (most BBS computers already should). Note that OS/2 automatically provides file sharing services. Also, adding PCBCheck to the path seems to help some users. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 4. Running PCBCheck ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ As noted in Installing PCBCheck, SETUP pretty much sets everything up for PCBCheck to run as the default upload processor for PCBoard. I will detail the acceptable parameters and methods of running PCBCheck below for reference. PCBCHECK filename [method] [description file] [port] The only required parameter is 'filename'. If you supply only 'filename', PCBCheck will behave as if LOCAL were used for method. 'filename' should be the filename to test (make sure it exists!) 'filename' can contain wildcards (* or ?) which are interpreted by DOS using standard DOS wildcard expansion. 'method' can be one of the following: LOCAL - PCBCheck will scan the file, but will not attempt to do anything with a description or COMM ports. This mode is used for local testing of files (non-PCBoard related mode). (user mode) OFFLINE - PCBCheck will scan the file and generate a description file, then move the file to the upload directory and register it with PCBoard (offline uploads) This mode has basically the same effect as uploading a file does, but offline (it checks the file, then performs the PCBoard task of moving the file to the upload directory and adding the description). This mode should only be used from the PCBoard directory in which the PCBOARD.DAT and PCBOARD.SYS are generated! (user mode) UPLOAD - PCBoard uses this mode to tell PCBCheck to scan the file, including description processing and communications (normal mode of operation for user or local uploads) (PCBoard mode) ATTACH - PCBoard uses this mode to tell PCBCheck that the description is unimportant and that the file is not a public upload, rather its in a message. PCBCheck will accept the upload even if it is unrecognized. (PCBoard mode) TEST - PCBoard uses this mode to tell PCBCheck to test the file, not do anything with the description (PCboard mode) 'description file' is the location of the description file to be used, this parameter is automatically passed by PCBoard, and should not be used for user mode tests. 'port' specifies an optional non-standard address or FOSSIL port for communications as described in Installation PCBCheck will return 0 if the file passed, 1 if the file failed. Note that PCBCheck also generates the file PCBPASS.TXT if the file passes and the file PCBFAIL.TXT if the file fails (as required by PCBoard). ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 5. Setup ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 5.0 Menu The menu allows you to jump directly to any of the pages. Once in the pages, you can move between them using Page Up and Page Down, or by returning to the menu and selecting a different page. 5.1 Archive support The archive support menu and pages allow to specify acceptable archiver types. You will need to specify an archiver executable, dearchiver executable (can be the same) and an extension associated with the archive type. You can also add parameters for various archiver operations. Set the archive and dearchiver to operate in an unattended mode or suppress prompts. Set the appropriate parameters to delete files, extract files, and add comments where appropriate (the three defaults provide good examples). The command line is assembled: filename Commands serve the same purpose as parameters, except they are inserted before the filename instead of after it (some archivers care). The archivers specified must be in the path while PCBCheck is executing for them to be used. 5.2 Non-archive support The non-archive support screen allows you to enter the extensions of acceptable non-archives. You do not need to fill all or any of the fields, though you cannot specify more than ten acceptable non-archive extensions. Special files which have internal PCBCheck support, such as GIF files, must still be specified here to clear the detection phase of PCBCheck! Self- extracting archives in the form of EXE files are the only exceptions. They are considered archives, so if the archiver support is enabled on the appropriate page and self-extracting support is enabled on the miscellaneous page, PCBCheck will accept self-extracting archives as EXEs. If you specify EXE here, you will be telling PCBCheck to accept all executables. Note that the wildcard '?' can be used in the extensions. For example, '0??' would allow any files whose extension begins with 0. If you want to allow ALL unrecognized uploads, however, use the accept unrecognized uploads switch instead of '???', though they should be functionally equivalent. Note that the '*' wildcard is not supported because it would serve no purpose (a single or double question mark could, in all situations, be substituted). 5.3 Recognition Criteria NON-STANDARD EXTENSIONS: Setting this switch to 'yes' instructs PCBCheck to accept archives whose extensions are non-standard (for example, a ZIP file with an extension JIM. A ZIP file can never have an extension ARJ, or other recognized archive extensions). This allows PCBCheck to perform more thorough checking on certain files, but at a price. For uploads which are truly unrecognized, PCBCheck will still have to check them, thereby significantly increasing processing time. Note that the processing time is a function of the activated archivers, so deactivate archives you won't use to improve performance. Note also that if TXT is specified as an acceptable non-archive extension, a ZIP file with a TXT extension will be treated as a non-archive upload. ALLOW UNRECOGNIZED UPLOADS: Setting this switch to 'yes' instructs PCBCheck to accept uploads which make it through the detection process completely unrecognized. Note this switch affects recognition criteria only. The upload will still have to pass age inspection, virus checking and any other specified tests. ALLOW SELF-EXTRACTING ARCHIVES: This switch determines whether PCBCheck will attempt to determine if EXE files are really archives. Note that if non-standard extension recognition is active, this switch is redundant. This feature has the same disadvantages as non-standard extension recognition. USE TRASHCAN LIST: You can maintain a file, TRASHCAN.PCB, which contains a list of filenames you don't want on your board. Note that if you're using PC-DOS, MS-DOS or OS/2, SETUP will attempt to locate your system editor and allow you to edit TRASHCAN.PCB from within SETUP! If it successfully locates your editor, a prompt will appear below this choice instructing you to 'F2 to edit TRASHCAN.PCB'. Format instructions for TRASHCAN.PCB are located in the sample file. 5.4 Description Editing / Restrictions (2 pages) Most of these switches are self-explanatory. The first switch allows you to specify that you want to allow ONLY uploads which contain a FILE_ID.DIZ or other recognized description file. The next four switches allow you to instruct PCBCheck to add the number of files in the archive, the newest date of a file in the archive, the resolution of a GIF, and/or the oldest date of a file in the archive to the description. You may choose any combination of the above, and only those appropriate to the upload type will be used. The second page allows you to specify description modifying parameters to clean up the descriptions. With all restrictions turned on, you will effectively remove almost all non-textual characters, color codes, etc... PCBCheck can remove ANSI codes (including color codes and keyboard reprogramming codes), PCBoard @-codes (including color codes and some of the more destructive @ codes such as HANGUP), |-color codes (not supported by PCBoard, but sometimes found in FILE_ID.DIZ files), and ALL high ASCII characters (removes borders and special symbols). 5.5 Supplemental Tests MAX AGE and PERCENT NEWER: Rather than use some complex algorithm to determine an average age, or just use the newest file date, PCBCheck allows you to specify an age and a percentage of files which must be newer than that age. For example, if your percentage is set at 50% and two out of three files in the archive are newer than the specified date, the upload will pass (66% are newer). Note that you cannot specify 100%, rather use 99% to tell PCBCheck that ALL files in the upload must be newer than the specified date. On the other hand, use 1% to tell PCBCheck that if ANY file in the archive is newer than the date the upload is acceptable (that has the same effect as most date checking systems, checking only the newest date). MINIMUM GIF RESOLUTION: Enter the minimum resolution (WIDTH, HEIGHT, COLORS) for GIF images. Note that each GIF image must pass all three criteria. CHECK FOR KEYWORDS: PCBCheck can scan the user-entered description for keywords which you do not want to appear in your filebase. The keywords are stored in KEYWORDS.PCB (the format is described in the sample file). The same editing feature exists as with the TRASHCAN.PCB file described above. 5.6 Virus Checking You can specify up to 5 virus scanners. All specified scanners will be used to test each upload, so you probably only want to specify one for speed reasons. Enter the name of a virus scanner executable in the leftmost blank (for example: F-PROT.EXE). If you specify a recognized executable (F-PROT or SCAN) SETUP will automatically populate the virus level and parameters fields with the correct values (note the special exception on McAfee's SCAN version 1). SETUP will also notify you if it cannot find the virus scanner you specify. You should specify virus scanning parameters to prevent the scanner from displaying any text to the screen, scanning the MBR, or scanning RAM. It should be instructed to scan subdirectories and operate in an unattended mode if such options are available. The virus level is the errorlevel the virus scanner will return if it finds a virus. The virus level is tested for equality, not greater than or less than the specified value. 5.7 Internal Operations SUPPRESS REMOTE OUTPUT: You can tell PCBCheck not to display anything on the remote screen. RAMDISK: Specify the drive letter of your RAM disk here. Do not specify a hard drive! The advantage of using this rather than simply putting the RAM disk in the data path is that uploads which are too large for the RAM disk then default back to the data path. PCBCheck should have the RAM disk to itself or conflicts may result (though multiple copies of PCBCheck shouldn't conflict with each other). DATA PATH: Specify the data path PCBCheck should use for its 'work' directory. It should be empty. If you specify a used or existing directory you may lose data. I also recommend a directory very close to the root directory, as it gives PCBCheck more room to work with. Note that the data path should NEVER be on a RAM disk (see the section on RAMDISKs to learn the proper method of using a RAM disk). SCREEN FILE: Specifies the background for PCBCheck to use. Note that the SCR files are NOT simple ANSI files, though they seem viewable as such! They are not user editable (with regular ANSI editors, anyway). They contain, in addition to other checksums, palette information for PCBCheck. CALLER LOG (errors and messages): You can tell PCBCheck that any combination of error reports and messages should be logged in the CALLER log (in addition to normal logging/reporting by PCBCheck). Errors are error conditions generated by PCBCheck which cause PCBCheck itself to fail. Messages are messages generated by PCBCheck about uploaded files, including reasons for upload failures. 5.8 Mail NOTIFY SYSOP OF (condition): Specifying yes tells PCBCheck that it should notify the sysop via PCBoard mail of the named condition. Note that specifying 'yes' does not affect any of the other operations of PCBCheck, for example, if you tell it to notify the sysop of program errors, PCBCheck will still also note the error in PCBCHECK.LOG and on the screen. NAME OF SYSOP: If the sysop is user "SYSOP" or if your board has multiple sysops, this allows you to direct mail intended for the sysop in charge of the file system to a person other than "SYSOP". 5.9 Privileged Users PCBCheck's privileged users feature allows you to specify a group of users who are exempt from certain upload restrictions. You can edit the PRIVILEG.PCB file with your text editor, or from within SETUP if it can find your editor. Put one name per line as per the examples in there (feel free to remove the examples, unless you really want us to be privileged users on your board). 5.10 Archive Modifying Features PCBCheck can remove the comments from archives (of archive types which support commenting). If you select 'yes' for replace comments, SETUP will create a new prompt which requests the file with which to replace the comment. You may either enter a filename of a file in the PCBCheck directory or enter NUL (leaving the field blank will prompt SETUP to insert NUL) to instruct PCBCheck to clear the comment. REMOVE FILES FROM ARCHIVE: You can maintain a list of files which you want PCBCheck to attempt to remove from archives. The list file must be DELETE.PCB, which has the same editing features as TRASHCAN.PCB and KEYWORDS.PCB described above (note the format for DELETE.PCB is described in the sample file). Why not recommended? You're modifying the original archive which I never recommend because you may be violating security packets. Also you may be removing a necessary file which just happened to have the same name as a file on your 'hit list'. ADD FILE TO ARCHIVE: You can specify a single file (in the PCBCheck directory) to add to all incoming archives. Why not recommended? In addition to being ANNOYING to have ads in files, you are again modifying the archive which may destroy security information. If people didn't use this feature, the remove files feature could also be eliminated. CONVERT ALL ARCHIVES TO ZIP: You can instruct PCBCheck to convert all recognized uploaded archives to the ZIP compression format before posting. Why not recommended? This is very STRONGLY not recommended, though it may sound appealing to many sysops. It has the same flaws as ADD and DELETE files named above, but has many more. First, the conversion is an inexact science and may result in data loss (there's absolutely NO way to verify that the conversion was correct other than visual inspection). Also, even in a conversion which seemed to work, there may be data loss. For example, converting an archive which is a ZIP made under OS/2 to an ARJ loses the extended attributes (possibly rendering the files useless) though it is completely undetectable (since it was decompressed under DOS rather than OS/2). Similiar situations exist with security envelopes and other platforms. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 6. Conference specific configurations ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PCBCheck now has the ability to have different configurations for different conferences. (I realise you may not want to try the same checking on archives in your Apple conference is in a regular conference, or may want to insert a different comment, etc...) Unfortunately, this was a very difficult feature to integrate with setup (I couldn't figure out any way, actually), so the only way to do it is by hand (suggestions are always welcome for improvements). SETUP creates PCBCHECK.INI, the configuration file for the main board. Renaming it PCBCHECK.001 makes it a configuration file for conference 1 (.002 for 2, etc....) So, if I run a ten conference system, and want a special configuration for conference 3, I would first run setup, enter the values for conference 3, then rename PCBCHECK.INI PCBCHECK.003. I would then run SETUP again, entering the values I wanted used everywhere else, and SETUP would save it as PCBCHECK.INI (which is fine). If there is not a specific configuration file for a conference, PCBCheck uses PCBCHECK.INI. PCBCHECK.INI is always used for the main board. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 7. Multinode/Multitasking, etc... ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Well, this is just about the same as running any other program on a multinode system. It does open all files in share mode, and does construct the 'temp directory' name based on the current node, so there should be no conflict. I share a PCBTEST.BAT between nodes on my system and it works fine. PCBCheck should work just fine under multitasking OS's or shells. I developed it and tested it exclusively on OS/2 Warp, so I *know* it works there. I've also run it under Windows for the BBS. I can't think of any reason it wouldn't work with DesqView then, except of course that it doesn't give up timeslices (but really, when I'm writing a DOS program I don't feel that it's my responsibility to give up timeslices, I think the multitasking OS which multitasks DOS programs should do that!) ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 8. Errors ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ Should PCBCheck itself fail in some way, it will automatically pass the file and report to the user the error code number. It will also create a file named PCBCHECK.LOG in the PCBCHECK directory which will note the error. If so specified in SETUP, PCBCheck will also send mail to the sysop which details the error. This list contains all known PCBCheck error codes which should occur: -1 Incorrect parameters -2 Cannot access PCBOARD.SYS -3 Cannot access PCBOARD.DAT -4 Cannot access PCBCHECK.INI file -5 Old/Invalid configuration (.INI) file in use -6 Cannot access specified .SCR file -7 Cannot open description file -8 Cannot creat PCBPASS.TXT/PCBFAIL.TXT -9 Cannot make work directory -10 Cannot remove work directory -11 Can't open the file to test -12 Can't read from the (already open) file to test -13 File to be tested does not exist -14 Cannot open the FILE_ID.DIZ from the archive -16 Cannot write to description file -20 Cannot open/read a PCC file -21 Cannot access trashcan file -23 Invalid PCC or PCC cannot be read -25 Invalid execute external process attempt -26 Command is too long -28 Cannot access keys file -35 Non-zero error code returned by external process -36 Old PCC in use -37 Cannot access deletion list file -38 Cannot access privileged user list file Obviously, most of them deal with file access problems, which could be related to access priveleges, file sharing or something similiar on your system. The most likely user-addressable problems are: -2 (cannot open PCBOARD.SYS) Not being able to access PCBOARD.SYS probably means PCBTEST.BAT doesn't run from the PCBoard directory (or changes directories), or else a PCBOARD.SYS doesn't exist in the PCBoard directory. It could also be a sharing problem It could also mean that your PCBTEST.BAT changes directories away from the directory in which the PCBOARD.SYS and PCBOARD.DAT are generated. -3 (cannot open PCBOARD.DAT) Not being able to find PCBOARD.DAT could be a sharing problem. It could also mean that your PCBTEST.BAT changes directories away from the directory in which the PCBOARD.SYS and PCBOARD.DAT are generated. -25 (can't find external process in path) Make sure that all designated acceptable archivers are in the path to fix a -25. -26 (command too long) The proper way to deal with a -26 is, as described earlier, relocate the PCBCheck directory as close to the root as possible to make the commands shorter. -35 (external program error) Note the external process which generated the error and its errorlevel. Then, refer to the external program's documentation to determine what the error means. The external process's errorlevel will be noted in PCBCHECK.LOG. More than likely you either ran out of memory (read special memory considerations) or out of disk space (you can set PCBoard not to accept uploads that reduce disk space below a certain level, i.e. 5 meg). N/A appears on virus scanner line Your chosen virus scanner is NOT in the path. To verify this, run SETUP, and SETUP will tell you (directly below the line on which you enter the name of the virus scanner) if the scanner is not in the path. D:\PCBOARD\PRIVUPLD\FILE.ZIP not found -reported by PCBoard Get PCBoard 15.1 or later if you want to use the 'convert archive types' feature. Versions prior to 15.1 did not allow the renaming of files during testing. PCBCHECK.LOG, should PCBCheck need to create it, is a wealth of information for error-solving. In addition to noting internal program errors (in addition to the time/date/file on which the error occurred) it also notes non-zero error levels as returned by archivers or virus scanning programs. This allows you to catch errors such as SCAN running out of memory, which otherwise be undetectable! ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 9. Legal Stuff ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ This program, its look, feel, and its related documentation are copyrighted. You may not reverse engineer, decompile, or disassemble the program. You may not modify or translate the program or documentation without the written consent of Jim Dahl. This program is provided "as is" without any warranties (or conditions), express or implied with respect to the program, including the implied warranties (or conditions) of merchantability and fitness for a particular purpose. The entire risk arising out of use or performance of the program and documentation remains with you. Some jurisdictions do not allow the exclusion of implied warranties, so the above may not apply to you. In no event will Jim Dahl be liable for any lost profits, lost savings, incidental or indirect damages or other economic consequential damages, even if Jim Dahl has been advised of the possibility of such damages. In addition, Jim Dahl will be not be liable for any damages claimed by you based on any third party claim. Some jurisdictions do not allow the exclusion or limitation of consequential or incidental damages, so the above may not apply to you. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 10. Memory Considerations ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ When you consider what PCBCheck does, you realize that at times there are up to three programs running at any one time, and each of them demands it be running in conventional memory. (PCBoard, PCBCheck, and a virus scanner or archiver/dearchiver may be running). PCBoard 15.x (in its latest incarnation as of this writing) consumes a whopping 248.3k when it shells to a program, such as PCBCheck, which leaves (assuming a base of 600k) only 351.7k for the other two programs! Of course, your base free memory before running PCBoard may be much lower than 600k. PCBCheck does it's part by swapping itself to XMS/EMS/disk, reducing it's kernel in active memory to a mere 1.7K (it's not getting any smaller). Unfortunately, some programs, such as McAfee's virus scanner, require more conventional memory than this leaves (McAfee's SCAN requires 380k -- note that there is a new version of McAfee's SCAN out called SCAN 2.0 which decreases the memory requirement). Since obviously PCBCheck cannot reduce it's memory requirements any further, it is up to you to setup PCBoard so it swaps more of itself out before shelling to PCBTEST.BAT to free up more memory. Another option is to use low-memory programs. I personally recommend F-PROT as a virus scanner (it is free, and has lower memory requirements). Note- if a program such as SCAN runs out of memory, it will not crash PCBCheck, rather it will cause PCBCheck to always report files as 'clean', thereby possibly allowing viruses to slip through! If an archiver runs out of memory, it will fail the upload. All errorlevels, for virus scanning and archiving/dearchiving, are noted in the PCBCheck log file, so you should be able to catch "out of memory" errors by referring to the log regularly (or if there are problems). If you get "Out of Memory" return codes from shelled applications, In System Setup, under Configuration Options, then Configuration Switches, set "swap during SHELL" to yes to free up more memory (at the cost of slightly slower swapping). The bottom line to memory considerations is get PCBoard for OS/2. Each shelled program gets its own VDM with 640k of RAM. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 11. Registration/Shareware ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ As I'm sure most Sysops know, shareware is not a type of program but a distribution method. If you continue to use my product you are obligated, morally and legally, to pay me for it. Therefore, I don't disable any cool features, or even make promises of neat new features or extra utility or maintenance programs if you register. I want to give you the full program so you know what you're really dealing with, and if you don't think it's worth paying for (which is fine with me) I expect you to quit using it. Note that the amount of work I put into PCBCheck is directly proportional to registrations received. When I receive registrations, I can justify putting large amounts of time into new, advanced features. Think of your registration as funding future releases. Until you register, PCBCheck will pause after each time you use it, to remind you that it is unregistered. For your evaluation convenience the pause will only be 5 seconds when you are using PCBCheck locally, but will be 10 seconds when your users upload. One registration does, of course, entitle you to use all future releases. The main advantage of registering PCBCheck (in addition to encouraging me to keep improving it) is that you will eliminate the delay and the title bar will say "PCBCheck - Your BBS Name" instead of "PCBCheck - Unregistered". Registration is currently set at $20. You can register either by filling out the REGISTER.DOC and mailing it to the given address or you can register online at the Eagle BBS. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 12. Future plans / rumors / possibilities / vapour ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PCBCheck will soon gain duplicate checking. It will not be part of the base product - rather an addon which requires separate registration. I'm still playing with an OS/2 version, though the DOS version is tweaked to run under OS/2 such that the OS/2 version actually runs a little slower, so I'm working on some true OS/2 features - threading, etc... ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ 13. Where to complain / how to compliment the author ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ I can be reached at: Eagle BBS (218) 773-6011 (home of PCBCheck) Legal Eagle is where I will continue to alpha test PCBCheck, and will continue to provide support. Also, I can field mail addressed to 'SYSOP' on this board. (note join conference 21) Internet dahl@Agassiz.CAS.UND.NoDak.edu FIDOnet Jim Dahl@1:2808/17 (pretty slow way to reach me) And of course, write to me at: Jim Dahl RE: PCBCheck 2236 Springbrook Ct. Grand Forks, ND 58201 ----------------------------------------------------------------------------- New versions can always be obtained from Salt Air or from the above BBS. They are FREQable as PCBCHECK from 1:2808/17 (not as reliable as downloading) You can also get the latest version of PCBCheck plus PCBCheck information at http://www.cs.und.nodak.edu/~dahl/pcbcheck Registrations (currently $20) taken at: Jim Dahl RE: PCBCheck 2236 Springbrook Ct. Grand Forks, ND 58201 Or to register online using your credit card: Call (218) 773-6011 Once logged on type ORDER and follow the prompts If you register online you immediately receive key information online. If you register via US mail a key will have to be sent to you electronically or via US Mail (slow!)