home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPMINFO
/
CPM-CC21.ART
< prev
next >
Wrap
Text File
|
2000-06-30
|
11KB
|
225 lines
==============================================================================
[ THE KAY*FOG RBBS | Filename=CPM-CC21.ART | posted 07/05/86 | 223 lines 11k ]
The CP/M Connection Originally published in
by Computer Currents
Ted Silveira 5720 Hollis Street
(copyright and all rights reserved) Emeryville, CA 94608
February 25, 1986
MORE ON MODEMMAIL
Last issue, I gave you an overview of ModemMail, a versatile new
communications program. This time I want to take a look at the heart of
ModemMail, its programming language, to give you an idea of what it can
do. If you think that only MS-DOS programs like Microsoft Access can
handle fancy "script" files, you're wrong.
[ModemMail Takes Command]
The ModemMail language is very flexible for a piece of software
that's not sold strictly as a programming language. You can do almost
anything you can do in a language like BASIC: you can read and write to
the screen, modem, or printer; you can assign strings or numeric values
to variables; you can read variables from disk files; you can use an IF-
ELSE type of branching logic to control program flow; you can set up
program loops with counters you can increment or decrement; you can peek
and poke directly into the computer's memory. And of course you can do
a whole range of things you'd expect from a communications program: set
the modem speed, dial and redial a phone number, drop in and out of
terminal mode, save a terminal session into a disk file, transmit files
with the XMODEM protocol, and so forth.
This programming language can be used in two ways--you can enter
commands directly at the ModemMail command prompt, or you can put the
commands in a command file (a mini-program, rather like a dBase II CMD
file or a SUBMIT file). If you have a command file on your ModemMail
disk, you can execute it simply by typing its name at the ModemMail
command prompt, just as if it were a built-in command. Essentially,
this feature means that ModemMail has an _extensible_ programming
language--you can add new commands to it at any time. You can also
"nest" command files by calling one from inside another.
[A Sample Command File]
ModemMail comes with a number of ready-made command files. Most of
these are part of a sample working bulletin board system, but you also
get some nice examples of automatic log-on files for MCI Mail and Dow
Jones News Service. So suppose you want to call MCI Mail--what do you
do?
The first step is to enter the command [CALL MCI] at the ModemMail
command prompt. The command [CALL] is itself a command file. This
command file will search the default phone directory (named PHONE.LST)
for an entry beginning with the letters MCI. When it finds it, it will
read the entire entry, which in this case is [MCI : 1-800-323-0905
MCI.LGI]. The CALL command file will locate the phone number, dial it,
and (if it gets a carrier tone and makes connection) trigger a new
command file named MCI.LGI, which will take over the job of logging in
to MCI.
In Figure 1, you'll find a listing of the command file MCI.LGI.
You'll notice that the commands are not too far from English; if you
know BASIC, you can probably puzzle it out on your own. Here's how it
works:
Lines 1 and 2, which begin with semicolons (;), are comment lines,
meant solely as explanatory notes to any human reading the file.
ModemMail ignores lines beginning with semicolons.
Line 3 sends the message (or string, as it's usually called)
enclosed in quotes to the console, better known as the screen. The
string consists of a carriage return/linefeed combination (represented
by \N), the words "Logging in to MCI Mail . . .", and another carriage
return/linefeed.
Line 4 assigns the variable Y a value of 3. This variable is going
to be used in just a second to count the number of trips through a loop.
ModemMail lets you use up to 26 variables (A-Z) at once.
Line 5 begins with a colon (:), which identifies the word that
follows (LOOP) as a label. Once you have established a label, you can
jump directly to it from any other spot in the command file just by
using its name.
Lines 6, 7, and 8 are taken as a single line and a single command
by ModemMail, because they are welded together with the [&-] characters.
The first part of this command--[MODEM "\R"]--sends a carriage return
(\R) out through the modem to the computer on the other end of the phone
line. The next part--[IF MODEM "your user name:" LOGIN]--tells
ModemMail to wait for the string "your user name:" (which is a prompt
from MCI Mail) to come in through the modem from the MCI Mail computer.
If the string does come in, ModemMail jumps directly to the label LOGIN.
But if ModemMail doesn't get the proper string within five seconds--
[TIMEOUT 5S]--it moves on to the line directly following.
Line 9--[DECREMENT Y]--is executed only if ModemMail didn't receive
the proper string within five seconds. This command simply subtracts 1
from the value of the variable Y (which started out as 3, you'll
remember).
Line 10 tests to see if the variable Y is still greater than zero.
If it is, the command file jumps back to the label LOOP, sends out
another carriage return, and looks for the MCI Mail prompt again. The
original value of Y gives ModemMail three tries to get the proper
response. If it fails, and Y becomes equal to zero, then the command
file moves on to the next line.
Line 11--[GOTO BYEBYE]--is executed only if ModemMail has tried
three times and failed to get a valid prompt from MCI Mail. If that
happens, ModemMail jumps to the label BYEBYE and executes the commands
it finds there.
Line 12 is another label, [LOGIN]. ModemMail jumps here if it gets
a successful response in line 7.
Lines 13, 14, and 15 are read as one line and one command by
ModemMail, because they are linked together with the [&-] characters.
The first part--[MODEM "TSILVEIRA\R"]--sends the string "TSILVEIRA" (my
user name on MCI Mail) out through the modem followed by a carriage
return. This string is an answer to MCI Mail's prompt "your user name:"
received earlier. Once you've logged on with your user name, MCI Mail
asks for your password, so the second part of this command--[IF MODEM
"Password:"]--tells ModemMail to wait for the string "Password:" to come
in through the modem (from the MCI Mail computer). The third part of
the command--[TIMEOUT 10S BYEBYE]--tells ModemMail to wait 10 seconds
for this string to arrive. If the string isn't received within 10
seconds, ModemMail will jump to the label BYEBYE. If the string _is_
received, ModemMail moves on to line 16.
Notice that this command is almost the same as the command at lines
6, 7, and 8, with one exception. The command at lines 6, 7, and 8 is
set up so that if successful, ModemMail jumps to the label LOGIN, and if
unsuccessful, it executes the following line. But this command at lines
13, 14, and 15 is set up to do the opposite--if unsuccessful, it jumps
to the label BYEBYE, and if successful, it moves on to the next line.
Line 16 sends the string "MYPASSWD" out through the modem in
response to MCI Mail's "Password:" prompt. (You didn't think I was
going to put my real password in there, did you?) The log-on to MCI
Mail should now be complete.
Line 17--[LET Y = ""]--just cleans up by clearing out the variable
Y (in case it gets used later).
Line 18 ends the command file, setting a success flag and returning
either to the ModemMail command prompt or to the command file that
called it. The success flag can be read by other commands and command
files so that they can adjust their actions to the results of the log-on
attempt.
Line 19 is the label BYEBYE, where ModemMail goes if it fails to
make a proper connection with MCI Mail.
Line 20 rings the bell and prints the string "Log-in failed." on
the screen, followed by a carriage return/linefeed.
Line 21 sends the string "+++" to the modem. This string, for
Hayes-compatible modems, gets the modem's attention and prepares it to
receive a command.
Line 22 tells ModemMail to wait three seconds without doing
anything (so the modem can get ready for its command).
Line 23 sends the string "ATH" to the modem, followed by a carriage
return. This string will cause a Hayes-compatible modem to hang up the
phone.
Line 24 ends the command file and returns to the command prompt or
calling command file with the failure flag set.
This particular command file is only a simple example of
ModemMail's programming language, but I hope it has given you an idea of
how flexible ModemMail is. I don't know of any CP/M communications
program that can match this kind of command file operation.
If you want to see a ModemMail bulletin board in action, call
408/336-8080. The computer is not turned on until the modem makes a
connection, so it takes about 30 seconds after you connect before the
bulletin board appears. The log-on has several long pauses, so don't
panic--just wait.
For more information on ModemMail, contact:
AutoSoft Incorporated
166 Santa Clara Avenue
Oakland, CA 94610
415/658-2881
[Figure 1 -- ModemMail Command File]
; This is the beginning of the MCI.LGI log-in
; command file.
CONSOLE "\NLogging in to MCI Mail ...\N"
LET Y=3
:LOOP
MODEM "\R" &-
IF MODEM "your user name:" LOGIN &-
TIMEOUT 5S
DECREMENT Y
IF VAR Y>0 LOOP
GOTO BYEBYE
:LOGIN
MODEM "TSILVEIRA\R" &-
IF MODEM "Password:" &-
TIMEOUT 10S BYEBYE
MODEM "MYPASSWD\R"
LET Y = ""
END SUCCESS
:BYEBYE
BELL "Log-in failed.\n"
MODEM "\+\+\+"
WAIT 3S
MODEM "ATH\R"
END FAILURE
------------------------------------------------------------------------------
Ted Silveira is a freelance writer and contributing editor to several
computer-oriented publications. He appreciates suggestions or feedback
and can be reached through the KAY*FOG RBBS (415)285-2687 and CompuServe
(72135,1447) or by mail to 2756 Mattison Lane, Santa Cruz, CA 95065.
------------------------- End of CPM-CC21.ART Text -------------------------