THE BASICS
     To be useful, a modem program needs some basic features.  It should 
send and receive data in the most common format--1 start bit, 8 data bits, 
no parity bit, 1 stop bit.  It should let you change the transmission speed 
if your modem has more than one speed.  And it should store phone numbers 
and dial them for you, if your modem is compatible with the Hayes 
Smartmodem.
     A modem program should be able to save everything that crosses your 
screen into a disk file, if you want.  It should let you send a plain text 
file (such as a prepared message), and while sending, it should respond to 
start and stop signals (XON and XOFF) from the other computer.
     Finally, to download public domain software from bulletin boards, the 
program must be able to send and receive files using the XMODEM protocol.  
With this protocol, sometimes called the Christensen or Modem7 protocol, a 
file is checked for errors as it is transmitted, guaranteeing that it 
hasn't been damaged by phone line noise or other transmission problems.
MDM740
     MDM740 is probably the most frequently used program.  It has all the 
basic features and has gone through a long enough development so that it's 
free of bugs, as far as I can tell.
     MDM740 also has some nice extras.  It can dial a list of phone 
numbers, one after the other, repeating the list until it makes a 
connection.  And it has 10 programmable function keys, each of which can 
store a string of characters that you can send to the remote computer with 
two keystrokes.  You can use these function keys to store log-on 
information (your name, password, etc.) and common bulletin board commands 
such as "DIR *.* $U0AD".  You change the function keys and the phone 
library by using two accompanying programs, M7FNK and M7LIB.
     Modem programs must be modified for different computers because they 
deal directly with the computer hardware, which differs from one machine to 
another.  Fortunately, you can adapt MDM740 more easily than most other 
programs.  You use a small assembly language file, called an overlay, which 
you patch into the main MDM740.COM file by using DDT (from your CP/M 
distribution disk).  There are overlays for more than 80 CP/M computers, so 
most people won't need any technical information about their machines.  And 
the instructions for patching MDM740.COM are straightforward enough that 
even a novice has a good chance of success.
     I've found three things I don't like in MDM740.  First, MDM740's menu 
covers three screens, and you have to go through all three to get back to 
the command prompt, even if the information you wanted was on the first 
screen.  It's just an annoyance, but it could be avoided if the menu fit on 
one screen or if you could jump to the command prompt without going through 
the whole menu.
     Second, I used to think there was no way to look at the function key 
assignments without exiting the program--a serious problem.  Not true.  
After months of use, I just found that there is a way--hit the ESCAPE key 
followed by the RETURN key at the MDM740 command prompt.  Why did it take 
me so long to figure this out?  Because the command isn't listed on the 
menu.  
     Third, the documentation for MDM740 is complete, but it's not easy 
reading.  It's clear to people who have some experience in modem 
communications but not to those who don't (at least that's the consensus in 
my users' group).  And it gives no easy answer to the question, "What do I 
have to do to call up my local bulletin board?"
MEX112
     MEX112 (Modem EXecutive version 1.12) is a new program, now only in 
its fourth revision.  Though it still has its roots in the original MODEM7 
(as does MDM740), it has been extensively rethought and has some unique 
features. 
     MEX112 has all the basics, and like MDM740, it has 10 programmable 
function keys and can continuously dial a list of phone numbers.  Unlike 
MDM740, MEX112 lets you reset both the function keys and the phone number 
library  without  exiting the program.  
     MEX112 also has a CLONE command, which makes a new copy of MEX112 and 
saves it to disk.  You can run MEX112, fiddle with the phone library, 
function keys, and other settings until you have everything set to your 
satisfaction, and then CLONE a new copy of MEX112.  This new copy will now 
have all your new settings as its default settings.  
     MEX112 has a HELP command, which gives you information about commands 
from a special 50K help file.  It's a good thing, too, since I can never 
remember all the MEX112 commands.
     Finally, MEX112 allows you to create command files.  In these files, 
you can put instructions both to MEX112 and to the remote computer.  MEX112 
will execute the command file just as if you were typing everything in at 
the keyboard.  You can, for example, create a command file that will dial 
your favorite bulletin board, give your name and password, save all 
messages to you in a disk file, and then log off.  
     This feature has potential, but from what I read on some bulletin 
boards, people have trouble getting complicated command files to work--
unexpected responses or delays can cause MEX112 to lose control.  If you 
want to use command files, there are two files that will help--AUTOMEX.INF, 
which gives information about setting up for automatic log-on, and 
MEXWELCM.LBR, a library of command files which allow someone to call  your  
system and do an unattended file transfer.
     MEX112 has drawbacks, too.  First, it's a new program, so it has had 
some bugs.  The latest one is described in the file MEX112.BUG, but it 
won't affect most people.  I've used MEX112 a lot without any problems, 
though I don't use any of its fancier tricks.  
     Second, MEX112 is not as easy to get running as MDM740 because you 
must install two overlays and the instructions are not quite as 
straightforward.  Also, MEX112 doesn't yet have as overlays for as many 
computers as MDM740 does.  The MDM740 overlays are supposed to work with 
MEX112, but some don't.  If you find there is no MEX112 overlay for your 
computer, and the MDM740 overlay doesn't work with MEX112 either, then 
you'll have to write your own, in assembly language, using another overlay 
as a model.  Once MEX112 has been around a while, the number of overlay 
files will grow, and MEX112 will become as easy to install as MDM740.  
Meanwhile, MEX112 takes more tinkering to get it running.
     Third, the documentation for MEX112, like that for MDM740, is thorough 
but not easy for the novice.  Some kind soul wrote a file called MEX-
EASY.DOC to make things clearer, but it's not the complete answer.
     Finally, MEX112 has no menu.  Instead, it has the HELP command and a 
STAT command, which lists the current options.  These two provide detailed 
coverage but aren't always easy to use.  For example, you might expect that 
"HELP COMMANDS" would list the basic commands; instead you get the message 
"no help available for 'commands.'"  A question mark brings a partial list 
of commands, including the most common ones (T, S, and R).  To get more 
help on these, you must type "HELP SINGLE" because they are single-letter 
commands.  To get help on the secondary options you can use with the 
single-letter commands, you must type "HELP SECOND".  But how would a 
novice know that "SINGLE" and "SECOND" are the key words?  They certainly 
wouldn't be my first, second, or even third guess.  For basic commands, I 
think a menu is better.
OTHER PROGRAMS WITH XMODEM PROTOCOL
     MDM740 and MEX112 are the most common modem programs, but there are 
others that can handle the XMODEM protocol.
     COMM725:  COMM725 has the basics, 10 programmable function keys, a 
menu that only takes one screen, and two big extras.  It allows you to 
change the data transmission format--start bits, data bits, parity bits, 
and stop bits.  And it has a built-in file-handling utility that lets you 
copy, delete, rename, view and print files, all without having to exit the 
program.  COMM725 won't continuously dial a list of phone numbers.  The 
function keys can't be changed without reassembling the program or using a 
disk editor.  And, most serious, COMM725 doesn't use overlay files; it 
comes as a set of five linked assembly language files.  Many people will 
find they need to know some assembly language to get COMM725 running.
     MODEM904:  MODEM904 is like a cross between MDM740 and COMM725.  It 
has the command structure and three screen menu of MDM740, but it also 
allows you to change the data transmission format, as does COMM725.  It 
comes as a set of assembly language files, and it's about as difficult to 
get running as COMM725.  
     MODEM7:  MODEM7 is the ancestor of MDM740, MEX112, COMM725, and 
MODEM904.  It lacks the extras the newer programs have and is difficult to 
get running.  MODEM7 went through many revisions, finally reaching 
MODEM798.  Note the difference in spelling between MODEM and MDM--MDM740 is 
a newer and better program than MODEM798.
     YAM:  YAM stands for Yet Another Modem program.  It's a sophisticated 
program, written in the BDS version of the C language.  If you have BDS C, 
you'll probably want YAM.  If you don't have BDS C, forget it.
     MODEM221:  MODEM221 is a program I've seen but never used.  It has the 
basics, but I don't know what else.  (I can't collect EVERY modem program, 
can I?)  It comes only as an assembly language source file.
     Special Note:  There is a program called XMODEM, which is used on 
RCP/M (Remote CP/M) bulletin board systems to allow file transfers.  Unless 
you're starting a bulletin board, you don't want the program XMODEM.  You 
want a modem program that can handle the XMODEM protocol.
     
WHAT'S BEST TO USE?
     For most people, it's a toss-up between MDM740 and MEX112, since 
they'll never use the extra features of either program.