This program is NOT public domain. This program is copyright. You may distribute the program freely so long as there is no charges for the program. Anything above the cost of the media which it is copied onto or the normal user fee of a bulletin board system is not allowed. This documentation must accompany the executable program. No commercial use of this program is allowed without prior written agreement from the author (me). May 1992 © Darrell Grainger BBSGuard -------- A friend needed a program what would monitor the carrier detect line. If there was a carrier detect this program would then monitor the line and time how long the carrier was detected for. By default the program would reboot the computer after 11600 seconds (3 hours). The following options are available: -a Make the window active when run. -b## Delay between checking for new ring count. Default 10. -c## Number of seconds to abort reboot. default = 30 seconds. -d## Delay before program activates. -g Enable Guru Meditation trapping. -n No requesters. Cancels all requesters. -p## Delay between the ring pulse. Default is 75. This stands for 75/50 or 1.5 seconds. -r## Number of unanswered rings before resetting computer. Default = 5 rings. -s## Set the number of seconds of carrier detect before resetting the computer. Default = 11600 seconds. -t## Delay in seconds between checks for carrier detect. Default = 10 seconds. -x## X position of the window. Default = 0. -y## Y position of the window. Default = 0. Note: the RI line of the serial port is connected to the SEL line of the parallel port. Selecting and deselecting the printer will seem like the phone is ringing to this program. Note: to conserve CPU time this program goes to sleep for 10 seconds between checks. So for 10 seconds it will seem as if the program has locked up. Always wait 10 seconds for something to happen. 1992 © Darrell Grainger I have done a lot of testing with the various options and here is what I found: -b There is ATLEAST 8 seconds between callers. This is a restriction of Bell's phone system. Some phone exchanges take as long as 9 seconds. To be safe I set the default to 10 seconds. This should work fine. -d Some BBS programs take a while before they can answer the phone. Run BBSGuard with no -d option. Time how long between when BBSGuard appears and the modem initializes. Whatever the seconds this take is what the -d option should be set to. -p I have found that some exchanges ring slightly longer or slightly shorter. This messes me up just a little. If you can, run BBSGuard and have someone call you. BBSGuard will display when it thinks the phone is ringing. If BBSGuard misses some of the rings then set -p to something lower then 75. -r Most BBS programs answer on the first or second ring. Most terminal programs, when autodialing, will only let the phone ring 6 or 7 times before hanging up and trying a new number. The default of 5 seemed sensible to me BUT be warned that sometime the BBS will not immediately answer the phone after a user has logged off. One BBS was famous for taking as long as 7 rings before answering if it was busy processing EchoMail. If you are using an Amiga 1000, it has no RI line so you should set this to -r0. If you want to add RI to your Amiga 1000 please contact me and I will send you tested instructions on how to add RI just like a 500/2000/3000. -s This value MUST be in seconds. Sorry but I was lazy. The default of 11600 is 3 hours. If you have anyone with access longer then 3 hours you must change this. If everyone's access is less then you can lower the default. Remember that this must be set for the user with the highest access time plus a few seconds to be safe. -t Rather then having the program CONSTANTLY checking the Carrier Detect line you can make my program go to sleep. I found that 10 seconds was long enough that it does not slow the CPU down or affect the BBS but you can make it long if you want. NOTE: if you change this it affects the time you have to wait if you try and quit the program. The rest of the commands are user definable and should need no further explanations. version 1.25 improvements ------------------------- - If a system Requester occurs the system will sometimes not reboot on the failure to answer (ring detect). The -n option will disable all of the requesters so even the System Requester will CANCEL (this causes a Guru Meditation so the -g option is recommended with this). version 1.24 improvements ------------------------- - added routines to disable Guru Meditations. If a Guru Meditation occurs and the -g option was enabled, the system will automatically reboot rather then sit at the flashing red Guru Meditation. version 1.23 improvements ------------------------- - added a self reboot feature. The program will no longer generates a requester that causes "Reboot1.1" to reboot the computer. This makes BBSGuard standalone. - added the -C option so you can have an abort before the thing reboots. When the program is about to reboot the title to the window will change to the "Double click here to abort". -C will determine how long you have to abort the reboot. Default is 30 seconds. During the abort/reboot period all screens will flash until you abort or the computer reboots. Pressing the left mouse button from ANYWHERE will abort the reboot. During ring detect the abort simply sets the ring count back to zero. During the carrier detect the abort resets the counter of carrier detect seconds back to -S## seconds left. version 1.22 improvements ------------------------- - made the check for time between rings programmable. If the delay between rings is too long we should assume this is a new caller and reset the count of how many rings. Default = 10 seconds. If the time from start of last ring to start of next ring is greater then 10 seconds the ring count will reset. This is the -B option. version 1.21 improvements ------------------------- - found there was a timing problem during the ring detect on some phone lines so I made the delay time between ring checks programmable. This is option P. Default = 75 (75/50 = 1.5 seconds). This default is new and should work on all phone lines. Some phone lines will allow you to increase the delay. Try setting the delay to 100, run the program, make the phone ring and see if it misses any of the rings. - While I was at it I made the delay between checking for carrier programmable as well. The bigger this number the less slow down for the user online BUT the long the delay should you wish to quit the program. version 1.2 improvements ------------------------ - added a delay option so they program can be made to wait for the BBS to power up and initialize. - added the -r0 option so the program can disable ring detect. No use in wasting CPU time checking for a ring that will not be there. - reset the ring counter if there is a 10 second pause between rings. I found that the phone rings every 7 to 8 seconds so if there is a ten second pause it must be a new caller. This means that ONE caller must let the phone ring -R times (default = 5). Don't set that too high or this option is pointless. version 1.1 improvements ------------------------ - optimized code to waste less time when checking for a ring. Program now goes to sleep for 2 seconds every loop of the ring detect routine. A ringing phone lasts for just over 2 seconds. If the delay is longer then 2 seconds there is a good chance the program will miss some rings. With a 2 second delay I have only noted it missing the first ring and then only when the first ring is a partial ring (less then 2 seconds). version 1.01 improvements ------------------------- - added a check for the phone ringing and the BBS not answering. If the phone rings unanswered for too long then obviously the BBS has crashed. Current I can be reached at: darrell.grainger@canrem.uucp OR telepro!darrell_grainger@access.usask.ca OR Chaotic Knights BBS (416) 272-1860 - messages to SYSOP are directed to myself and the actual Sysop. OR Darrell A. Grainger 48 Wheeler Ave. Toronto, ON M4L 3V2 Canada If you have any suggestions or find any bugs please drop me a line. I'm also interested in finding out where this program makes it to, so send me a postcard or something if you could. Future plans ------------ - support for the Commodore A2232 card (have to get programming info on the card).