home *** CD-ROM | disk | FTP | other *** search
- +
- -1-
-
-
- File: PCPFAST.MEX
- Rev: Jan 26, 1987
-
-
- FAST AUTOMATIC PC PURSUIT CONNECTIONS USING MEX
- ----------ooooooooooOOOOOOOoooooooooo----------
-
- by Laurence J. Lavins
-
-
- 1. P C P F A S T A B S T R A C T
- ----------------------------------
-
- A simple user-friendly method has been developed for automatically
- accessing a PC Pursuit city, using the MEX v.1.14 PD communication
- terminal program, running under CP/M-80 (v.2.2). If a BUSY signal
- is received, the access string will be AUTOMATICALLY retransmitted
- every 5-6 seconds until a CONNECT signal is received from Telenet.
- The user may then send commands to the remote Telenet modem in the
- normal manner. This method does not involve any use of a keystring
- file, thus allowing the user to retain the entire capacity of that
- keystring file for other purposes.
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- 2. I N T R O D U C T I O N
- --------------------------
-
- Over the past few months, the number of customers using Telenet's
- PC Pursuit Service has increased dramatically, thus making it very
- difficult to place a call, especially during the few hours of peak
- system usage each day.
-
- As a consequence of the often prolonged, repetitive and wearisome
- transmissions which must be entered by a caller seeking to estab-
- lish a connection with a distant PC Pursuit city, some means were
- sought to facilitate this process.
-
- My own computer system is a modified TRS-80 Model 4 equipped with
- a hard disk, a Hayes compatible 300/1200 baud modem, and both the
- TRSDOS 6.2 and CP/M operating systems. With TRSDOS, I usually use
- the XT4 (v.1.6.8) communications terminal program (Copyright 1985
- by Bill Andrus, Fairfax, VA). And with CP/M, my program of choice
- is MEX v.1.14 (Copyright 1984 by Ronald G. Fowler, Ft. Atkinson,
- WI). Both of these communication programs have many nice features,
- and they're both in the public domain for non-commercial private
- use. I understand that the authors of both these programs may now
- also have released other commercial or proprietary versions, with
- added features. Unfortunately, these aren't in the public domain.
-
- What I attempted to do, therefore, was to see if I could develop
- some rather simple means of adapting either of these two communi-
- cations programs to enable faster and/or more automatic means of
- establishing a PC Pursuit trunk connection to the called city.
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
-
-
-
- -
- +
- -2-
-
- 3. T H E S P E C I F I C P R O B L E M
- ------------------------------------------
-
- When making a call via PC Pursuit, it's first necessary to access
- a Telenet node by calling the local phone number of that Telenet
- node. This presents no problem. Almost all communications terminal
- programs now in wide use provide excellent capabilities for making
- such phone calls. Once a connection has been established with that
- Telenet node, however, the PC Pursuit caller must then request the
- system to set up a connection from that local node to a modem port
- in the city being called. Therein lies the heart of the problem.
-
- Since there may be hundreds of customers (callers) trying to gain
- access to some limited number of modem ports in any one of the 25
- PC Pursuit cities, the usual response from the system is a "BUSY"
- signal. The callers must then keep calling, and as each port may
- become available, some lucky caller will be connected. Obviously,
- the more access requests a caller can initiate in a given period
- of time, the better will be his chances of getting connected.
-
- Unfortunately, this element of a call isn't a trivial matter. The
- Telenet protocol requires the following string to be sent out, in
- response to the Telenet network command prompt symbol, "@":
-
- "C DIALaaa/bb,uuuuuuuu,pppppppp" [cr]
-
- where: aaa is the Area Code of the city being called.
- bb is the baud rate in hundreds, either 3 or 12.
- uuuuuuuu is the User ID (usually 8 bytes).
- pppppppp is the Password (usually 8 bytes).
-
- Typing this string isn't bad once, or maybe twice. But just think
- what it would be like to manually enter such a string 100 or more
- times in succession! Well OK, you might say, all anyone has to do
- is to set up a macrokey, or function key, or whatever name your
- communications terminal program uses for such things. And both of
- my own two terminal programs, named above, certainly do have such
- features, as do most others in wide use today. I agree. Now we're
- much better off, not having to manually type in such long strings,
- over and over, repetitively.
-
- But I'm lazy. And I also get mighty fed up just having to keep on
- pressing [CLR] [KEY] or [ESC] [KEY], over and over, in response to
- each and every BUSY signal from Telenet. Even this, done 100, 150
- or 200 times in rapid succession, is enough to drive me away from
- all this high-tech stuff, back to the wastelands of TV.
-
- Moreover, the XT4 program is limited to a maximum of 10 macrokey
- strings in each data file. Since I insist on using at least 5 of
- these for other purposes, then only a maximum of 5 are available
- in any one data file for these PC Pursuit city strings. Even then
- there's no capacity left for local phone numbers in those cities
- once all 10 keys are used up. So realistically, I'd have to put up
- with the continuous loading, back and forth, among 5 or more data
- files. Not too accomodating.
-
- MEX fares somewhat better in this regard, although it's not quite
- as convenient for general communication purposes as is XT4, in my
- opinion. Theoretically, MEX allows you to have as many keystrings
- in a single keystring file as there are keys on the keyboard. But
-
-
- -
- +
- -3-
-
- there seems to be a 404 byte limit on each such file, according to
- my arithmetic, which DOES include the two sets of quotes that MEX
- requires to define a string, but DOESN'T include the key symbols
- themselves and equal signs. So maybe you can put 8 or 9 of these
- city strings into each keystring file, using the rest of the 404
- bytes for other commonly used strings, telephone numbers, etc. So
- now, with MEX, we're down to only 3 of these files. For example,
- PCP1.KEY, PCP2.KEY and PCP3.KEY. Not much of an improvement, but a
- little bit maybe. But it's still a crude approach to the problem.
-
- Another awkward option, of course, is not to prestore any of these
- city strings. But rather, to type them individually, as required,
- just prior to calling a PC Pursuit city, and then storing only that
- one string. The advantage of this, of course, is that you may then
- be able to get by with a single data file. But as far as all that
- continuous typing of 35 byte keystring sequences every time a new
- city has to be called ... . no thanks!
-
- And now, finally, that everyone understands that I really am quite
- lazy, the problem boils down to developing an easier, faster and
- more efficient means for dealing with these PC Pursuit city access
- calls, especially in the high-traffic busy hours conditions.
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- 4. S E L E C T I O N O F M E X
- ----------------------------------
-
- Despite my own personal preferences for XT4 over MEX for general
- communications purposes, I did decide, for a variety of technical
- reasons, that XT4 in its present form wasn't a suitable candidate
- for this exercise. Conversely, however, and also out of technical
- considerations, MEX seemed to offer some viable possibilities. So
- the remainder of this paper will deal only with MEX.
-
- I did, of course, reveal my little project to several of my close
- associates. The most profound advice and counsel elicited from all
- these experts was that I wouldn't ever achieve salvation until my
- obsolete "TRASH 80" machines were replaced by Big Blue or one of
- its clones. With a machine of such a color, and software to match,
- I was told, all problems such as this rapidly disappear. Or at the
- very least, I was also advised, if I insisted upon remaining loyal
- to CP/M (shudder!) why not just purchase the expanded proprietary
- version of MEX from Ron Fowler, which might be able to handle this
- class of problem. As a natural born rebel, I now became even more
- obsessed with the problem, and refused to stop thinking about it,
- and continued on, trying out several different approaches.
-
- So now we're down to the following ground rules:
-
- (1) A standard CP/M-80 (v.2.2) operating system.
-
- (2) MEX Version 1.14 PD release. (The earlier v.1.12 would
- probably do just as well for this application, however.)
-
- (3) Maintain a simple user-friendly approach, using inherent
- features of MEX and CP/M. Minimize changes & additions.
-
- (4) Nothing of a commercial or proprietary nature is to be
- utilized. Everything shall be in the public domain (PD).
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- -
- +
- -4-
-
- 5. T H E B A S I C A P P R O A C H
- --------------------------------------
-
- After much analysis of the MEX commands and stat variables plus a
- great deal of trial and error, it seemed like it might be possible
- to play some tricks on MEX, using the SENDOUT command and/or the
- READ command, along with some other associated commands and stat
- variables.
-
- What we'd like to do is to set up the equivalent of some logic of
- the "IF ... THEN ... " type. Now, it's quite clear that the PD
- version 1.14 of MEX doesn't include such sophisticated commands.
- Specifically, we need to do the following:
-
- (1) Pre-store a complete set of city access strings. Or as an
- alternative, a single string with symbolic variables. They
- should reside in a data file of semi-permanent nature.
-
- (2) Initiate the transmission of any one specified access
- string in a simple manner with minimum keystrokes.
-
- (3) IF a "BUSY" signal is received, THEN repeat the previous
- transmission after a network command prompt appears. This
- is to be done completely automatically, without the user's
- manual intervention, for some specified number of retrans-
- missions. The user should be able to abort this process at
- any time.
-
- (4) IF a "CONNECT" signal is received, THEN do not repeat the
- previous transmission, but rather allow the user to enter
- the data transfer mode and send commands to the modem at
- the distant PC Pursuit city, in the normal manner.
-
-
- At first glance, MEX 1.14 doesn't appear to support the commands
- needed to implement this logical sequence, but closer examination
- reveals that it does, in fact, have the capability. We'll have to
- perform some sleight of hand in order to fool the system, but it
- really can be done. Trust me!
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- 6. T H E S P E C I F I C S O L U T I O N
- --------------------------------------------
-
- Here's what we're going to do now to weave our bit of magic with
- MEX. First, the logical structure, then the details. In hindsight
- it seems so simple. So how come it took so long for someone to
- figure it out, dummy?
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
- 6.1 THE LOGICAL STRUCTURE
- --------------------------
-
- The logical basis of the solution here is to use the WTECHO stat
- variable in conjunction with a SENDOUT command. When WTECHO is ON,
- all characters transmitted to the remote terminal (Telenet) via a
- SENDOUT command are compared with the characters echoed back from
- the remote. Since Telenet does echo back whatever we send out, as
-
-
- -
- +
- -5-
-
- any good host terminal should, that cooperation is what makes our
- trickery work. If there's a discrepancy (error) between what we've
- sent out and what's echoed back, then MEX further provides us with
- the means to retransmit. Not only must WTECHO be turned ON, but we
- must also specify a CANCEL character to be sent out to the remote
- upon discovery of the error, and also a TRIGGER character which we
- must look for from the remote to trigger our retransmission of the
- SENDOUT string. Lest I forget, the "error" character that's added
- to the SENDOUT string in order to create the discrepancy between
- the SENDOUT string and its echo in the first place, along with the
- CANCEL and TRIGGER characters are extremely critical and specific.
- It took lots of educated guesswork, plus trial and error, before a
- set of values for these 3 characters was found that would permit
- a completely workable solution. Unless all the values are set up in
- exactly the correct way, either one of the following may occur:
-
- (1) There may be no retransmission of the initial call after a
- "BUSY" signal is received.
-
- (2) There will be continued retransmissions of the original call
- as long as "BUSY" signals are received from Telenet. But then
- after a "CONNECT" signal is received, MEX will "freeze", and
- CP/M must be rebooted to restore your system.
-
- Additionally, the REPLY and RETRY stat variables should be set up
- properly, but these aren't critical.
-
- The "error" character mentioned above is a single character which
- is appended to the SENDOUT string IMMEDIATELY FOLLOWING the final
- "^M" carriage return in that string. My theory here, which proved
- to be correct, was that such a character would be saved by MEX for
- comparison purposes when WTECHO is ON, but that it wouldn't really
- be transmitted out via our own modem or echoed back by Telenet in
- the unlikely event that it did get transmitted. Since MEX has been
- designed to save the contents of the string prior to transmission,
- whatever they may be, for comparison purposes, that's exactly what
- we're now going to take advantage of for our own purposes here.
-
- So far, so good. Now let's go back to the SENDOUT string itself,
- which conforms to the format described back in Section 3. The way
- to make it simpler, at this time, is to execute PREFIX and SUFFIX
- commands as soon as MEX is booted up. Like this, for example:
-
- PREFIX "C DIAL"
- SUFFIX "//12,uuuuuuuu,pppppppp^Me"
-
- where uuuuuuuu is the User ID
- pppppppp is the Password
- e represents the appended error character
-
- To initiate transmission, just key in "SENDOUT aaa" for the area
- code of the city you're calling, and hit your [cr] key. The whole
- string, including the PREFIX and SUFFIX, will then be correctly
- sent out by MEX. Note that if a "BUSY" response comes back from
- Telenet, MEX logic will cause a retransmission, provided that all
- the appropriate stat values have been entered. Have patience now,
- we're still developing the logical structure. The specific values
- for the error character and those stat variables will be revealed
- below, shortly.
-
-
-
- -
- +
- -6-
-
- Now, if everything being done is clearly understood, let's go one
- step further beyond the basic SENDOUT command. This brings us to
- the READ command. It may appear to be a little difficult to grasp
- at first, but it's quite simple. Look at it like this: All we're
- doing is to take the SENDOUT command, along with its whole string
- (no need here for PREFIX and SUFFIX commands) and enter it into a
- file on disk. Let's use the default drive (usually A:), and also
- let's arbitrarily (because I say so) name this file P.MEX. You can
- use any old word processor or text editor of your choice to create
- and store this file. It'll look like this:
-
- File Name: P.MEX
-
- Contents: SENDOUT "C DIALaaa//12,uuuuuuuu,pppppppp^Me"
-
- See, nothing to it. The contents of this file are all included on
- a single text line. After you've saved this file on the disk, key
- in the command "TYPE P" directly from MEX, or "TYPE P.MEX" from
- CP/M, in order to verify that this file really contains what you
- think you wrote and saved. Since we used the MEX default extension
- for this filename, we don't need to use the extension when calling
- this file from within MEX. (Ain't that clever now, huh?) If you're
- still hangin' in there, don't let go. You've almost got both feet
- up onto this step now.
-
- So guess what needs to be done now to execute the SENDOUT command
- that's written into file P.MEX? If you said READ P, you're right
- on! Congratulations! If you didn't guess correctly, please review
- what we've done so far and also review the MEX documentation. And
- now we've only got two steps left to reach the top landing.
-
- Everybody aboard now? Alright, let's move on up. And here's where
- you might have just a wee bit more difficulty. MEX has a marvelous
- bit of its own duplicity that permits us to say one thing when we
- really mean another, kinda like some females I've known. Just look
- again at that one line SENDOUT command in the P.MEX file:
-
- SENDOUT "C DIALaaa//12,uuuuuuuu,pppppppp^Me"
-
- I'm going to surgically remove the 3-digit area code, "aaa", and
- in its place, let's put something else, like "{1}". This numeral,
- ENCLOSED WITHIN BRACES, is called a formal parameter. It may also
- be referred to as a variable symbol. Whatever you want to call it
- is OK with me. Just remember that IT MUST BE ENCLOSED WITHIN THOSE
- BRACES. Now, go back to your word processor and change the SENDOUT
- command, and then save it to filename P.MEX, like this:
-
- SENDOUT "C DIAL{1}//12,uuuuuuuu,pppppppp^Me"
-
- As you might have guessed, there's no free lunches around here. So
- the payment has to be made up at the READ command by appending the
- "aaa", where it's now referred to as an actual parameter. Whatever
- numbers we enter into the actual parameter will be substituted for
- the formal parameter when the READ command is executed. So our READ
- command will now look like this:
-
- READ P aaa [cr] instead of READ P [cr]
-
- The numerals used for variable symbols refer back to the actual
- parameters in the READ command, in sequential order. If you had a
-
-
- -
- +
- -7-
-
- mind to do so, you could replace the baud rate 12 with {2}, as an
- example. Then you would have to follow the aaa in the READ command
- with a 3 or a 12. (I personally always use 12, even for 300 baud
- transmission. It works, and a 1200 baud port seems easier to come
- by than a 300 baud port.)
-
- Whew! I'm all out of breath. So let's take a short breather, just
- long enough to make sure that everything so far is clearly under-
- stood. OK? Everyone still here?
-
- Ready now for the final push. The top landing is only a small step
- away. This last step takes us to the EXTEND stat switch variable.
- We're going to turn it on. And you ask me how come? And I say back
- to you because I say so, and also because I'm lazy, and if we turn
- on this switch, then MEX will let us forget to write the READ into
- the READ command line. How's that for doublespeak, huh? So try it,
- you'll like it! And so we now can use just:
-
- P aaa [cr] instead of READ P aaa [cr]
-
- It should be very clear to you readers at this point that MEX has
- allowed us to make up a phantom command, which will be executed by
- MEX like any other legitimate intrinsic MEX command. What's more,
- even if you still don't understand how it works, you don't have to.
- All you gotta do, dummy, is press a P and an Area Code number. OK?
- Now that's simple enough to satisfy the original groundrules!
-
- Moreover, none of the valuable 404 bytes in the MEX keystring file
- needs to be used for city access strings. You can use the entire
- file for all your other strings, like commands, names, telephone
- numbers, BBS passwords, or whatever else. So you see, we don't have
- to pay a penalty in that department anymore either.
-
- -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
-
-
- 6.2 HERE'S THE FINAL DETAILS - NOW GO GETTUM, KEMOSABE!
- -----------------------------------------------------------
-
- If you waded through all the preceding stuff, and understand any
- of it, you've earned the right to the final critical details and
- values. And even if none of it makes sense to you, just take your
- numbers and good riddance! I also once thought about saying "to be
- continued next month." But I don't want to be bothered with doing
- another paper any more than anyone out there really wants to bother
- reading one. So here's the goodies:
-
-
- Error character: @ (Critical value. Others may cause freeze.)
-
- Stat CANCEL: ^M (Critical value. Others may cause freeze.)
- Stat ERRID: Switch OFF (Not critical, but may save time.)
- Stat EXTEND: Switch ON (Needed for the phantom command.)
- Stat REPLY: 6 sec. (Timeout factor. Not critical.)
- Stat RETRY: 255 (Max retransmissions. User may change.)
- Stat TRIGGER: @ (Critical value. Telenet command prompt.)
- Stat WTECHO: Switch ON (Mandatory setting.)
-
- Abort the loop: CTRL-C (This can be done at any time)
-
-
-
- -
- +
- -8-
-
-
- 7. S O M E W O R D S O F W I S D O M
- ------------------------------------------
-
- Here's just a few more finishing touches now, plus review of some
- of the lessons learned. There's some important new information in
- here too, regarding the actual operation of this PCPFAST method of
- accessing a PCP city, so please read it all very carefully to make
- sure that you have a clear understanding of what you must do.
-
- (1) Set up a READ file P.MEX, or whatever other name you want to
- use, and store it on disk. It should contain the one-line
- SENDOUT command and string described above, with the formal
- parameter {1} in place of the area code. Remember the braces!
- Also, don't forget to append the error character, "@", to the
- end of the string, immediately following the "^M".
-
- (2) Set up the principal stat variables, as shown just above.
- Make sure that there are no active PREFIX or SUFFIX strings.
-
- (3) Set up and load your PCP.PHN and PCP.KEY files into MEX for
- use with PCP. Enter all your phone numbers, strings, etc.
- Don't forget to execute COLD first to clear out other data.
-
- (4) CLONE this MEX config for exclusive use with PCP. And name it
- MEXP.COM, perhaps. Then, when you want to use MEX for calling
- PC Pursuit, just call up MEXP from CP/M, and you're all set.
-
- (5) After a connection has been established with a local Telenet
- node, use ESC-E to return to MEX command mode. Then key in
- P aaa [cr] to initiate the SENDOUT command in the READ file,
- for area code aaa. If all modem ports in the destination PCP
- city are occupied, you'll get a "BUSY" response, and MEX will
- retransmit an access request approximately every 5.6 seconds.
- You may abort at any time with a CTRL-C, or equivalent key.
-
- (6) When a "CONNECT" is received, you'll see it. Now do a CTRL-C
- to abort the READ file. You'll probably time out, and go into
- the command mode. Enter T [cr] to go into terminal mode, then
- follow up with one or two [cr] entries until you see the "@"
- network command prompt symbol. Now THIS IS IMPORTANT for you
- to understand, so PLEASE READ CAREFULLY: As a result of what
- was done to manipulate MEX, you ARE connected to the called
- city at this point, but can't send any commands to its modem
- because you're now in the network command mode, as indicated
- by the "@" prompt. You must be in the data transfer mode to
- send commands to that modem. To go to the data transfer mode,
- enter CONT [cr]. Then you may send commands to that modem in
- the normal manner. Hint: Put "CONT^M" into your PCP.KEY file.
- (CONT isn't a generally published Telenet command, so please
- make a note of it somewhere.)
-
- (7) It's probably a good idea to switch WTECHO OFF after you've
- established connection, but not essential. The ON state can
- possibly disrupt the normal operation of some keystrings. You
- can easily set up READ files for turning Stat WTECHO ON and
- OFF. They're much easier and faster to use than entering the
- full STAT commands. I use W.MEX and WF.MEX for filenames. If
- you do this, don't forget to turn WTECHO ON again before the
- next PC Pursuit call is initiated.
-
-
- -
- +
- -9-
-
-
- 8. T H E F I N A L W O R D
- ------------------------------
-
- Good luck to everyone using this method of accessing PC Pursuit
- with MEX. It works just fine for me, and I see no reason why it
- shouldn't work just as well for anyone else.
-
- Hopefully, others will do some of their own experimentation, and
- perhaps come up with improvements, suggestions, etc. which may be
- beneficial to the entire CP/M - MEX user community. Constructive
- comments and feedback along such lines are sincerely requested.
-
-
- If anyone wants to reach me, I can be contacted as follows:
-
- By U.S. Mail: P.O. Box 1503, Havertown, PA 19083
-
- By voice phone: (215) 878-9608 or 878-9609
-
- By E-Mail: Drexel Hill Northstar RCP/M (215) 623-4040
- Exclusive-80 (215) 739-9512
- (Both BBS's are accessible via PC Pursuit)
-
-
- ----------- Larry Lavins
- Philadelphia, PA
- Jan 26, 1987
- END OF FILE