
Well... after much work, modification, improvised workarounds, et al, I
think I have finally arrived at a "final" version of my two PCBoard PCP/Win
scripts. Both use a single "library" of routines to handle the various
prompts that PCBoard systems can throw at you.

Just for information.... I've experienced errors when there is more than
one comment line in a script. This just may be my box, or it may be
something more general. You can try it with the comments included, but if
you get an error 111, or 112 when it first runs, try eliminating them.

These scripts have been tested after applying the SPEEDASP patch only, so I
can't guarantee how they will run without that patch applied. They have
however, been tested with log ins at speeds ranging from 1200 bps to 12,000
bps, and have worked at all speeds I was able to test.

The first one, PCBLOG.WAS, is fairly simple. It requires no setup other
than it be compiled, and run from a dialing directory entry. Simply copy
PCBLOG.WAS and PCBPROMT.INC to your Aspect directory, and compile
PCBLOG.WAS. Nothing else should be needed to log on to a PCBoard system (I
hope <G>).

PCBMAIL.WAS is a little different than PCBLOG.WAS. It still uses
PCBPROMT.INC however, it does require certain items be set in certain ways
in the dialing directory entry that uses it.  These are :

1) The "name" field in the dialing directory entry MUST include, as the
first item in the name, the Qmail ID used by that board, followed by a
space. You can find this by simply taking the root of a QWK from that
system. As example, I have a packet CRS.QWK. The Qmail ID for Canada Remote
Systems is CRS. My dialing directory entries are :

CRS line 1,
CRS line 2, etc.

2) The Miscellaneous field (the very last field in a dialing directory
entry) MUST contain the following information, separated by a comma, and
not to exceed 15 characters total :

A) the particular door name or number needed on that board to access the
QMail door. i.e. on Canada Remote, it can be either 67 or Qmail.

B) The directory you use to store mail (since the script will move a DL'd
QWK from your specified download directroy, to that mail directory.) There
should be no trailing backslash.

As example, for Canada Remote, my Miscellaneous field looks like this :

67,f:\mail

That's really all that's needed. The script will use your dialing directory
for UserID, Password, etc., and for the information specified above.

Oh yes... as the script stands right now, it will only work with a single
QWK packet downloaded. If you have the QMail door set for multiple
downloads, it might be an idea to turn that off until I can write, and test
a procedure to handle that occurence. (I'm working on it, but it is really
hard to test, since I never get more than one QWK. CRS message limits are
400 per conference, and 2000 per packet, so I have to reconfigure the QMail
door to lower message limits any time I want to test the multiple QW?
download procedures. A real headache! <GG>)

The same applies to PCBMAIL.WAS. Simply copy it, and PCBPROMT.INC (if it's
not already there), to your Aspect directory, and compile PCBMAIL.WAS. Set
up your dialing directory entry as specified above, and that should be it.

PCBPROMT.INC is a "library" file used by both PCBLOG.WAS and PCBMAIL.WAS.
It contains the routines to determine, and respond to, the prompts sent by
PCBoard systems. By using a single when target command in either WAS, the
majority of prompts sent by PCBoard systems can be handled, with that when
target remaining active throughout the script, so that ANY time the prompt
appears, it can be handled properly. (The line in either WAS is "when
target 0 "?" call get_prompt")  PCBMAIL.WAS uses two other when target
commands to catch two unique prompts, one that is the "ready to receive"
signal from ZModem during a REP upload( "^xB01"), the other that is used if
QMail finds no mail during it's scan ("were found!"). I have found that
using the "^xB01" string is more successful than any other possible string
to check for, for a couple of reasons.... 1) it is always the same on any
board, and 2) it indicates that the board is completely ready for the
upload, thus resulting in fewer CRC errors etc. during the initial part of
the upload.

PCBPROMT.INC uses a simple function call to check and see if the prompt
"keywords" are in the string taken from the terminal. This funtion returns
an integer, 0 if the keyword was not found, 1 if it was, which allows for
easy conditional testing of keywords.

I would appreciate any comments or criticisms, and would be glad to assist
with any problems that arise when using these scripts.

Gregg Hommel, 72537,552

