

... In the vernacular of the communications industry, there are a few
concepts that need to be understood before understanding 'HOW' is
accomplished.  For example, the word BAUD.  This essentially
means 'bits per second'.  In fact, it means something a little
different than that, but for openers, let's say that's what it
means. 
 
Now, whenever two machines are going to try to communicate with
each other a couple of things have to be done by both.  They must
both be set to send and receive at the same frequencies, for
example.  The most often used frequency, today, is 1200 baud.
That means 1200 bits per second, as I said before.  Well, most
users have no idea what bits are involved in a file transfer or a
message transfer.  Let's look at another standard word: BYTE. 
There are 8 bits of information contained in a byte.  That is, a
byte is merely a set of 8 bits.  Within a set of 8 bits there are
256 permutations available.  From all zeroes to all ones.  Each
letter in the alphabet and each digit and each other special
character is represented by a predetermined set pattern of
those 8 bits.  A capital 'J' has a different pattern than a lower
 
case 'j', for example.  Given that that is true, it is easy to see
that no more than 128 of the total possible patterns would be
necessary to represent any text.  Thus, we have another 128 that
may be used for 'special purposes'.  What, for example?  I'll get
to that. 
 
The sending of bits (on or off, high or low, in other words
binary information) is, by definition, a binary process.  That is,
the computers need only recognize one of two states.  The
telephone, on the other hand, carries information that is other
than binary.  It can faithfully represent different tones, pitch,
and volume.  This is called analog rather than binary.  The
almost sole purpose of a modem is to translate binary signals
into analog and vice versa.  When you  are going to send a set of
bits across a telephone you will have to convert those binary
'states' into some form of sound (which is, after all, what the
telphone is designed to best carry).  Modulating a signal from
binary to analog is the 'Mo' in Modem. 
Demodulating an analog signal back into binary is the reverse and
is the 'Dem" in Modem. 
 
If we want the transmission to be highly reliable then we must do
more than simply send the binary information (modulated).  We have
all heard 'noise' on a telephone line and without doing more than
demodulating into bits, the receiver will no doubt have a
virtually impossible time of being able to tell what sounds are
bits or just plain noise.  In some applications, we don't really
care all that much.  Examples include the transmission of plain
text files.  Recall that all that was necessary to send any
letter, many special symbols and any digit was a capability that
required no more than 128 different combinations of bits.  7 bits
are sufficient to represent 128 permutations of those bits.  That
is, if a byte were only 7 bits long then it could contain as many
as 128 different sets of bits being on or off).  However, a byte
is 8 bits long by definition.  So, in what is called ASCII
(American Standard Code for Information Interchange)
transmissions we can use the first 7 of those bits to represent
data and the 8th bit to represent some form of insurance or
integrity check that the first 7 were received as they were sent.

This is called using 'PARITY'.  You can establish a convention
between the sender and the receiver that every byte WILL have an
even number of bits (or odd) and use the 8th bit to do so at the
sending end.  If the receiving end ever gets a byte that has odd
parity then it knows that it received the byte in error (some bit
or bits were either added or lost).  That is all there is to
parity checking in an ASCII transmission.  Not at all very good,
but sufficient for most text. 
 
Program files or data files or even text files that have been
compressed (ARChived) in some way use all 8 bits in every byte to
represent information.  So, we have lost the ability to use
parity as an integrity check vehicle.  Instead, in every protocol
other than ASCII we add either one or two full bytes to the end
of a 'block' of bytes.  The block is a fixed length (usually 128
bytes).  The purpose of those one or two bytes is to contain what
is called a Cyclic Redundance Check (CRC) character or word.
Like parity, the CRC is constructed at the sending end to create
a pattern of bits that demonstrates that the preceeding entire
block of bytes has been received with integrity.  The Receiving
end dynamically creates its own CRC from the information received
and compares it to the byte or bytes received at the end of a
block.  If it doesn't match then the block must be rebroadcast (requested
by sending to the sender a signal that says: "Negative Acknowledge" -
NAK.  If it was ok then it sends an ACK - meaning "Acknowledge", and the
next block is sent. 
 
Now, let's go back to the idea of baud.  At 1200 baud, the modems
are able to send and receive 1,200 bits per second.  How many bits
per byte? Yes, 8, but not on a telephone line if you are using
modems!  Instead, we bracket a byte by sending what is called a
start bit before the 8 bits of data and ending with what we call
a stop bit (sometimes 2 - at 300 baud).  So, every byte requires
10 bits, not 8.  Thus, at 1200 baud your maximum possible data
transfer rate is 120 characters (bytes) per second! 
 
OK.  Now we know what we have to send and how many bits are
required and that there is something called a response from the
receiver called either an ACK or NAK.  So why don't we get 120
bytes per second transfers using 1200 baud modems?  Well, we
already saw that for every 128 bytes of data, in most protocols,
we send an additional one or two bytes of CRC.  We DO NOT count
the CRC byte(s) as data!  Yet it takes time to transmit.  Also,
it takes time for most protocols to turnaround and react to the
ACK or NAK.  For example, assuming all is well, the sender  has a
few hundred blocks to upload to the receiver.  After the first
block is sent he, by convention, must wait for the receiver to
analyse the CRC and decide if it is going to respond with the ACK
or a NAK.  Then it takes a moment to send that to the sender who,
in turn, has to receive it, verify that it got here properly (was
not just noise) and decide whether to send the next block or to
resend to last one that was improperly received by the receiver. 
That takes time.  All time used as described above is called
'overhead'.  Overhead does not include the transmission of DATA,
only control bits and time.  Thus, it is impossible to get to an
effective DATA transmission rate of even 118 characters per
second let alone 120 (CRC, etc).  But, we know that the telephone
is capable of carrying sound in both directions simultaneously. 
So, why should the sender have to wait for the receivers ACK or
NAK?  This mode of operation is often called 1/2 duplex, by the
way.
 
The answer, of course, is that it does so only by convention. 
Newer protocols do not wait.  They assume that a transmission
will be successful and will result in getting an ACK.  So they go
immediately to the task of sending the next block.  Always
listening, of course, for that ACK or NAK.  When it is received
as an ACK all is well and we have gained performance.  If not,
the software has to decide which block or blocks have to be
rebroadcast.  In order to do that it should be obvious that the
ACK or NAK is not simply a single byte.  Rather, it includes a
byte that is called the packet number (0 to 255), and possibly
more information.  If an ACK is received the recipient knows
which of a series of blocks(packets) it is referring to. 
Similarly it would know with an NAK.  Yep, more bits and more
overhead! 
 
Well, then let's see if I can get to a few more contemporary
terms and information more practical to know at this time. 
 
For example, almost nobody uses ASCII transfers any more.  Why
should they when they are so poorly controlled and when you
realize that ONLY un-compressed raw text can be sent with it?
Still, a great many first time communications users try to do so.

And, while the transmissions will appear to work, the resulting
files will be garbage, of course.  Only 7 oF the 8 bits are being
transmitted in each byte!  Many comm programs will allow you to
use ASCII even when they should know that the result will be
unsatisfactory.  For example, if a filename ends with COM or EXE
then, again by convention, that file is an executable program. 
ALL such programs use 8 bits in every byte and could not,
therefore, be transmitted via ASCII.  Some comm programs will not
let you try to do something that stupid (only, of course, to a
knowledgeable user). 
 
What are the protocols that currently exist in wide spread usage
across the country?  The most frequently seen is called XMODEM. 
This protocol is quite reliable (about 96%) and uses blocks of
128 bytes plus one CRC character at the end of every block.  It
is because it uses only one CRC character that the reliability is
only 96%. 
 
Another is called XMODEM/CRC.  This is exactly the same as XMODEM
but it uses two CRC characters.  The result is that the effective
performance is reduced insignificantly (1/130th), but the
reliability is increased to about 99.6%.  In any case where you
have a choice between the two you would, of course, opt for
XMODEM/CRC. 
 
Then, and this is particulary true in environments where one of
the computers being involved is either a mini or a mainframe,
there is a protocol which is called Kermit.  I believe it uses
128 byte blocks and other overhead such as a 'header block -
block zero' that provides control information.  It is also very
reliable (99.6% I believe) but it is SLOW!!!  It is used only if
that is the only protocol available. 
 
Then there is what is called YMODEM.  This protocol differs from
the earlier ones in that it sends 8 - 128 byte blocks together as
a 'super block' before it sends the two byte CRC word.  As a
result it is the fastest protocol that I have ever seen for micro
computers that use 'dumb' modems (ie, non self correcting ones). 
There are two times when one should not use this protocol if
there is a choice: 1) when the line noise is great on the
telephone (for a retransmission of a 'block' that failed involves
1024+2 bytes even if only one bit was gained or lost).  That is a
lot of overhead!  And 2), in an environment like PC-PURSUIT that
involves long duration hand shaking turnaround delays. 
 
Another protocol is called Telink.  Telink uses 128 byte blocks
but has an advantage over the other ones.  It results in a file
that is exactly the same size and has the same date and time
stamp on it as the one being sent.  Ymodem, for example, adds to
(pads) a block until it is exactly 1024 bytes (the last record)
even if that record only contains a few bytes of data. 
 
GT PowerComm has a unique protocol called 1kTelink.  It is the
same as Telink except it uses 1024 byte blocks and is therefore
more efficient.  Like YMODEM, 1kTelink should only be used on
clean phone lines for performance, but unlike YMODEM it can be
used on even a short file with efficiency. 
 
In the case of GT, and then only if communicating GT to GT, if
either YMODEM or 1kTelink experience a set of 6 errors during the
transmission of a single file then it will automatically fallback
to 128 byte blocks to greatly increase the odds that the
transmission can be completed and to greatly increase the
efficiency on what is presumed to be a noisy line!!!  Neat!!!
 
The BEST protocol at this time for use in a PC-PURSUIT environment
is called Wxmodem which stands for 'Windowing Xmodem'.  This uses 128
byte blocks but it does not wait between blocks for a response.  It is
always listening for those ACKs and NAKs, of course.  Extremely high
performance is the result, relative to Xmodem or the other 1/2 duplex
protocols.  Wxmodem tries to stay 4 blocks ahead of the receiver at all
times while the receiver tries to get 'caught up'.  The difference
between the block being sent and the most currently received ACK or NAK
is called the window (a number between 1 and 4).

Then there are two more odd protocols that have become relatively
visible of late.  These are called ZMODEM and Batch-YAM.  ZMODEM
was designed for use in a PC-PURSUIT like environment.  Like
WXMODEM, the best protocol for use in that environment, ZMODEM
does not wait for ACKs and NAKs.  Unlike WXMODEM, ZMODEM is
relatively slow.  For one reason, it uses no buffering.  Thus
every 512 bytes of data it must make another disk access. 
Batch-YAM is much like YMODEM except that it allows you to specify a
set of file names (a 'batch' of them).  It is slower than YMODEM
except, possibly on PC-PURSUIT. 

What must a user know to do a file transfer?  What protocol is
available on BOTH ends of the transmission, the file name of the
file on his end and the file name on the other end.  That is, if
the receiveing end of a transmission already has a file with the
name of the file you want to send to it, naturally you will call
the new file something else.  Thus, every comm program allows the
specification of the file name on your end and then the name on
the other end.  (It is not just an irritant that you 'already'
typed that in, it is necessary).  Having said that I must make an 
exception  - Telink  and 1kTelink.   These protocols allow batch
names,  like Batch-YAM,  but the receiving end and transmitting end
file names are the same.

That's it for now. 

Wood: I have a few questions. ok? 

Davis: Sure. 
 
Wood: Four to be exact.  

1- You mention date/time stamp on one of your protocol
descriptions but did not define its use prior to that.  What is
this and what is it used for?
 
PC-DOS or MS-DOS marks every file with the date and time that
file was created or last modified.  So, let's say I want to send
you a copy of my transmission log that was dated 12/31/86 (by
DOS).  If I use any protocol other that Telink the resulting file
on your end will be dated with the date and time it was created
(ON YOUR SYSTEM!)  Today, now.  Telink creates that file and
leaves it on your system with my date and time stamp still
intact.
 
When I receive an ARCed file this time/date stamp is in the EXE
module somewhere? 
 
Davis: It is several places in that example.  In the directory record on
your disk is the formal residence of the stamp.  So, in the case
of an ARC file, it has a date and time stamp.  Additionally,
within the ARC file each record, which is merely another way of
saying 'each file within the ARC file', has the date and time
that THAT file had in its directory record BEFORE it had been
ARCed into the ARC file.  When you unARC, the resulting file will
not have todays date and time as a stamp but the one recorded
within the ARC file for it. 


Wood: Good, I understand perfectly.  I can relate it to what we
sometimes do on the mainframe. 

 
2-You mentioned padding with YMODEM.  What is this?  Does the
receiving end recognize the padding and discard it automatically?

Davis: Let's say the file you want to send is exactly 1025 bytes long. 
Each block transmitted by YMODEM contains 1024 bytes of date plus
2 bytes of CRC.  It will, therefore, take two blocks to send that
file.  The second block will contain only 1 byte of data plus
1023 padded "blanks" - actually End Of File marks.  YMODEM sends
1024 bytes every time!.  The receiver does not automatically
strip those padded bytes.  Indeed, it passes them to the
resulting file so that it will always be an even multiple of the
1024.  Thus, you sent a 1025 byte file and it becomes a 2048 byte
file!! 


Wood: Ok--3...You came to a conclusion without what I thought was the
necessary support when you said "...thus 512 bytes result in a
disk access with ZMODEM..."  I did not follow the conclusion.
Help! 
 
Davis: Sure.  As we discussed before the tutorial when we talked about
buffers, a buffer is a fixed length (amount) of memory,
sufficient to contain some number of blocks of data.  In the case
of ZMODEM, a block is 256 bytes, by the way.  If the protocol
used buffers there could be some large multiple of 'blocks' in
memory awaiting transmission.  Instead,  ZMODEM does not use a
buffer.  Thus, it must have in memory only one sector of data at
a time.  In the PC world, a sector is 512 bytes, or two blocks of
data as far as ZMODEM is concerned.  Again, since that is the
case, after two blocks (512 bytes), ZMODEM must go back to the
disk to get more data to transmit. 
 
Wood: One of the first things we learned in programming school 20+
years ago was that you could do things a lot faster with more
than one buffer.  WE typically (or the system) use at least two.

Why would ZMODEM not use any?  Is there a memory problem? 
 
Davis: I can't speak for the authors of ZMODEM but I will say that it is
typically not a protocol that is written into a program like GT
PowerComm (As is Xmodem or Wxmodem, etc.).  Instead, it comes
rather conveniently in the form of an EXE program that can be run
independantly of the comm package or by a simple shell out of the
comm package to it.  In the latter case, there is no way to know
how much memory might be available in the majority of systems. 
The program itself, could, of course, simply find out.  But you
will recall that BOTH ends of a transmission are highly dependant
upon compatible software.  It might be that the author of ZMODEM
simply took the easy way out.  I don't know. 

 
Wood: This leads nicely into my final question which deals with today's
comm packages.  When I first bought my PC I did the necessary
research by reading reviews and magazines like Software Digest. 
I rejected XTALK and settled on HYPERACCESS.  After I started
using it I discovered Shareware.  I have come to the conclusion
that there are two classes of products in the Micro world today. 
Commercially developed and other.  My company uses XTALK.  In the
corporate environment you order a comm package and you get what
the corporate gurus decide is best for you.   
I like ProCommm.  I do not like to feel that I was ripped off by
buying HyperAccess.  I just feel that I was uninformed at the
time.  In this area ProComm seems to reign as King with the
majority of PC users.  

4- What are the advantages of GT over ProComm? 
 
Davis: Excellent question.  Let me try to deal with it professionally
instead of from the bias I would naturally have for GT PowerComm.

(When I wrote the documentation for GT I twice called it ProComm
- how embarrassing it would have been if I had released it
without an edit). 
 
Let's go back a little in time.  Before the era of the PC
virtually all micro computers were 8 bit in design rather than
16.  At that time the undisputed King in the area of comm
packages was Crosstalk.  It enjoyed an excellent reputation and
was well supported.  Further, it was not terribly expensive and
it was one of the only comm packages that supported what was to
become a whole set of protocol transfer methods (it was an XMODEM
protocol).  Well, in those days if your comm package didn't work
reliably and you were not sure if it was a hardware problem or a
software problem you simply put up Crosstalk.  If it worked the
conclusion was that the problem was software.  It was THAT
reliable. 
 
Along came the PC's.  Crosstalk was ported to the 16 bit world,
but in a way that made very little progress in terms of adapting
to the capabilities of the PC's.  To this very day, I believe it
is impossible to change directories in Crosstalk, though I could
be wrong.  In essence, Crosstalk continues to be available and
though it runs reliably in a 16 bit environment it runs like it
was in a CP/M environment, not a DOS one. 
 
Then there was a leading contender from the shareware world
called QMODEM.  It enjoyed an excellent following and was
remarkably efficient by comparison to Crosstalk - MUCH faster, in
fact.  And, it had a couple of contemporary protocols not
available in Crosstalk.  It took off and has been a very
successful product ever since. It is a great program.  While Procomm
and others gained ground on Qmodem, it consistently comes roaring
back with more features and innovations than the others.

About the same time the Hayes Modem manufacturers
introduced SmartComm II as a commercial product and it was being
shipped with many of their modems.  By brand identification it
was accepted.  This, despite that it is the clumsiest of all the comm
packages I have ever seen.  It was, furthermore, not very
efficient by comparison to QMODEM.  It has essentially been
unchanged since its introduction (Sound like Crosstalk all over
again?) 

A new comm package hit the scene called ProComm.  In this program
the author spent a great deal of attention to 'image'.  He used
imaginative ideas like a whistle that announced opening and
closing of windows, the windows themselves were innovative, etc. 
It was no where near as efficient as QMODEM, but it captured the
imagination of the users.  And, like QMODEM, the price was right
- $0 to try it out, and then if you decided to, you sent them a
small check - but that's shareware. 
 
Procomm has advanced far faster than QMODEM in terms of
incorporating different protocols and the incorporation of what
is called a Host mode, or unattended mode of operation
(autoanswer of modem, etc.)  It became King as you call it by
being both innovative and current - but not by being efficient,
though it is quite respectable. 
 
GT PowerComm was only formally announced to the shareware world
on the 21st of last month!!!(2/21/87).  It includes 8 protocols, not
including the also present ASCII, of course.  At 2400 baud, I
routinely establish DATA transfer rates of 235.5 characters per
second with it, while the best I ever got with Qmodem was about
220 and with Procomm about 218.  Actually, I did get a 225 once
with Qmodem, but only once. 
 
So, in terms of performance, nothing has come close to being as
fast as GT PowerComm.  But that, as we saw with Procomm, is not
all that the user is looking for.  We have incorporated an
extremely rich function called the LOG.  Into that log is
recorded all connects, disconnects, messges to the host,
passwords used to gain access, bad passwords tried, and even more
interesting, the names and time to trasmit every file that goes
from the GT to or from another computer, and along with that is
the total byes involved and the name of the protocol used in the
transmission and, finally, manually created notes and messages. 
So what, you might ask.  I would answer that if you were the Sysop
of a board, or of a Corporate system, you MUST be able to
determine who sent you a file or a messgage and when.  (Yes, date
and time stamps are included in all entries in the log).  For
example, what would be your reaction if you found that  a program
on your disk was a trojan horse if you could not determine where
it came from?  Or, say you created a proforma for your department
and it has been downloaded by 18 different executives before you
discover a major error in it.  Wouldn't you want to be able to
determine who has received that file?  All those kinds of
questions are automaticlly answered via GT's log and GTLOG.  The
main reason for feeling that there is a substantial difference
between GT and Procomm for the user is in the area of SUPPORT.  I
take it that it has occurred to you that I have been talking to
you for more than three hours already?  And I don't even know if
you are a registered user of GT.  Well, I am only one of two of
us that do exactly the same thing.  The author of GT PowerComm, Paul
Meiners, provides 24 hour a day access to his system as I do (as the
author of the companion software).  We have provided many new
versions of GT powerComm over the past year and are about to
provide release 12.10 only two weeks after announcing 12.00 on
the 21st!  Why, because we are constantly enhancing the products
and our users want us to do so.  We have several major clients
already including one of the major Oil companies, one of the
major airlines and one of the countries largest school
districts!!!  Finally, nobody has a better Host mode than GT
PowerComm!!!  I run a BBS using nothing else.  That is power and
function!  Try it, you'll love it!!

Wood: I can't wait to put the system together!  Rest assured that I
will register the program.  As an ex-programmer I know what is
involved.  I wish the product much luck.   Did you say 3 hours?

Davis: I believe so.  I don't remember, but I reset the 1 hour time
limit I gave you twice now, possibly three times.  By the way, as
a favor to me in exchange for the time, would you mind terribly
ARCing your capture file and sending me a copy.  I can make it
available as a tutorial to others.  And if you will make it
available to others as well, it is possible that they will come
to know GT PowerComm as well.

Wood: No problem.  I will not be able to do this for a couple of days
however.  My modem is on the blink and I am waiting for a
replacement.  I will upload GT and the Log and CTL files to all
of the bulletin boards that I normally deal with.  I have already
uploaded it to the corporate BBS.  I do expect to get some
healthy ribbing from the ProComm lovers which is why I asked the
question that I did.  For now though I would like to get the Log
file.


Davis: Thanks for the opportunity to be of help.  I too  must get to
work.  So, I'll take you out of chat mode.  Don't forget to
'close' your capture file.


                         Jim Davis' Retreat    Voice 713 558-5015
                                               Data  713 497-2306

