[comp.sources.atari.st] v01i046: zmdm -- terminal program with file transfer part06/08

koreth@ssyx.ucsc.edu (Steven Grimm) (05/30/88)

Submitted-by: bammi@mandrill.ces.cwru.edu (Jwahar R. Bammi)
Posting-number: Volume 1, Issue 46
Archive-name: zmdm/part06

#!/bin/sh
# this is part 6 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file UTIL.C continued
#
CurArch=6
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file UTIL.C"
sed 's/^X//' << 'SHAR_EOF' >> UTIL.C
X#endif /* REMOTE */
X#endif /* STANDALONE */
X
X/* -eof- */
SHAR_EOF
echo "File UTIL.C is complete"
chmod 0600 UTIL.C || echo "restore of UTIL.C fails"
echo "x - extracting YMODEM.DOC (Text)"
sed 's/^X//' << 'SHAR_EOF' > YMODEM.DOC &&
X      
X      
X      
X                                  - 1 -
X      
X      
X      
X                     XMODEM/YMODEM PROTOCOL REFERENCE
X                 A compendium of documents describing the
X      
X                            XMODEM and YMODEM
X      
X                         File Transfer Protocols
X      
X      
X      
X      
X                   This document was formatted 9-11-86.
X      
X      
X      
X      
X      
X      
X      
X                         Edited by Chuck Forsberg
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X                 Please distribute as widely as possible.
X      
X                       Questions to Chuck Forsberg
X      
X      
X      
X      
X      
X                           Omen Technology Inc
X                        17505-V Sauvie Island Road
X                          Portland Oregon 97231
X                           Voice: 503-621-3406
X            Modem (Telegodzilla): 503-621-3746 Speed 1200,300
X                          Compuserve: 70007,2304
X                    UUCP: ...!tektronix!reed!omen!caf
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X                                  - 2 -
X      
X      
X      
X      1.  ROSETTA STONE
X      
X      Here are some definitions which reflect the current vernacular
X      in the computer media. The attempt here is identify the file
X      transfer protocol rather than specific programs.
X      
X      XMODEM refers to the original 1979 file transfer etiquette
X       introduced by Ward Christensen's 1979 MODEM2 program.  It's also
X       called the MODEM or MODEM2 protocol.  Some who are unaware of MODEM7's
X       unusual batch file mode call it MODEM7.  Other aliases include "CP/M
X       Users's Group" and "TERM II FTP 3".  This protocol is supported by
X       every serious communications program because of its universality,
X       simplicity, and reasonable performance.
X      
X      XMODEM/CRC replaces XMODEM's 1 byte checksum with a two byte Cyclical
X       Redundancy Check (CRC-16), giving modern error detection
X       protection.
X      
X      XMODEM-1k Refers to the XMODEM/CRC protocol with 1024 byte data blocks.
X      
X      YMODEM refers to the XMODEM/CRC (optional 1k blocks) protocol with the
X       batch transmission described below.
X      
X      ZMODEM uses familiar XMODEM/CRC and YMODEM technology in a
X       new protocol that provides reliability, throughput, file
X       management, and user amenities appropriate to contemporary
X       data communications. 
X      
X      
X      2.  YET ANOTHER PROTOCOL?
X      
X      Since its development half a decade ago, the Ward Christensen modem
X      protocol has enabled a wide variety of computer systems to interchange
X      data.  There is hardly a communications program that doesn't at least
X      claim to support this protocol.
X      
X      Recent advances in computing, modems and networking have
X      revealed a number of weaknesses in the original protocol:
X      
X         + The short block length caused throughput to suffer when used with
X           timesharing systems, packet switched networks, satellite circuits,
X           and buffered (error correcting) modems.
X      
X         + The 8 bit arithmetic checksum and other aspects allowed line
X           impairments to interfere with dependable, accurate transfers.
X      
X         + Only one file could be sent per command.  The file name had to be
X           given twice, first to the sending program and then again to the
X           receiving program.
X      
X         + The transmitted file could accumulate as many as 127 extraneous
X           bytes.
X      
X      
X      
X      Chapter 2  
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                        3
X      
X      
X      
X         + The modification date of the file was lost.
X      
X      A number of other protocols have been developed over the
X      years, but none  have displaced XMODEM to date:
X      
X         + Lack of public domain documentation and example programs have kept
X           proprietary protocols such as MNP, Blast, and others
X           tightly bound to the fortunes of their suppliers. 
X      
X         + Complexity discourages the widespread application of BISYNC, SDLC,
X           HDLC, X.25, and X.PC protocols.
X      
X         + Performance compromises and moderate complexity have limited the
X           popularity of the Kermit protocol, which was developed to allow file
X           transfers in environments hostile to XMODEM.
X      
X      The XMODEM protocol extensions and YMODEM Batch address these
X      weaknesses while maintaining XMODEM's simplicity.
X      
X      YMODEM is supported by the public domain programs YAM (CP/M),
X      YAM(CP/M-86), YAM(CCPM-86), IMP (CP/M), KMD (CP/M), rz/sz (Unix, Xenix,
X      VMS, Berkeley Unix, Venix, Xenix, Coherent, IDRIS, Regulus).  Commerical
X      implementations include MIRROR, and Professional-YAM.[1] Communications
X      programs supporting these extensions have been in use since 1981.
X      
X      The 1k packet length (XMODEM-1k) described below may be used in
X      conjunction with YMODEM Batch Protocol, or with single file transfers
X      identical to the XMODEM/CRC protocol except for minimal
X       changes to support 1k packets.
X      
X      Another extension is simply called the g option.  It provides maximum
X      throughput when used with end to end error correcting media,
X      such as X.PC and error correcting modems, including the emerging
X      9600 bps units by Electronic Vaults and others.
X      
X      To complete this tome, Ward Christensen's original protocol document and
X      John Byrns's CRC-16 document are included for reference.
X      
X      References to the MODEM or MODEM7 protocol have been changed
X      to XMODEM to accommodate the vernacular. In Australia, it is
X      properly called the Christensen Protocol.
X      
X      
X      
X      
X      
X      
X      __________
X      
X       1. Available for IBM PC,XT,AT, Unix and Xenix
X      
X      
X      
X      
X      Chapter   2
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference         09-11-86                      4
X      
X      
X      
X      2.1  Some Messages from the Pioneer
X      
X      #: 130940 S0/Communications 25-Apr-85  18:38:47
X      Sb: my protocol
X      Fm: Ward Christensen 76703,302 (EDITED)
X      To: all
X      
X      Be aware the article[2] DID quote me correctly in terms of the
X      phrases like "not robust", etc.
X      
X      It was a quick hack I threw together, very unplanned (like
X      everything I do), to satisfy a personal need to communicate with
X      "some other" people. 
X      
X      ONLY the fact that it was done in 8/77, and that I put it in the public
X      domain immediately, made it become the standard that it is.
X      
X      I think its time for me to
X      
X      (1) document it; (people call me and say "my product is going
X          to include  it - what can I 'reference'", or "I'm writing a
X          paper on it, what do I put in the bibliography") and
X      
X      (2) propose an "incremental extension" to it, which might take
X          "exactly" the form of Chuck Forsberg's YAM protocol.  He
X           wrote YAM in C for CP/M and  put it in the public domain,
X           and wrote a batch protocol for Unix[3] called rb and sb
X           (receive batch, send batch), which was basically XMODEM with 
X          (a) a record 0 containing filename date time and size
X          (b) a 1K block size option
X          (c) CRC-16.
X      
X      He did some clever programming to detect false ACK or EOT, but basically
X      left them the same.
X      
X      People who suggest I make SIGNIFICANT changes to the protocol,
X      such as "full duplex", "multiple outstanding blocks", "multiple
X      destinations", etc etc don't understand that the incredible
X      simplicity of the protocol is one of the reasons it survived to
X      this day in as many machines and programs as it may be found in!
X      
X      Consider the PC-NET group back in '77 or so - documenting to
X      beat the band 
X      - THEY had a protocol, but it was "extremely complex", because
X        it tried to be "all things to all people" - i.e. send binary
X        files on a 7-bit system,  etc.  I was not that "benevolent". I
X        (emphasize > I < ) had an 8-bit UART,  
X      
X      
X      __________
X      
X       2. Infoworld April 29 p. 16
X      
X       3. VAX/VMS versions of these programs are also available.
X      
X      
X      
X      
X      Chapter   2
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                        5
X      
X      
X      
X      so "my protocol was an 8-bit protocol", and I would just say "sorry" to
X      people who were held back by 7-bit limitations.  ...
X      
X      Block size: Chuck Forsberg created an extension of my protocol,
X      called YAM, which is also supported via his public domain
X      programs for UNIX called rb and sb - receive batch and send
X      batch.  They cleverly send a "block 0" which contains the
X      filename, date, time, and size. Unfortunately, its UNIX style,
X      and is abit weird[4] - octal numbers, etc. BUT, it is a nice way
X      to overcome the kludgy "echo the chars of the name" introduced
X      with MODEM7. Further, chuck uses CRC-16 and optional 1K blocks.
X      Thus the record 0, 1K, and CRC, make it a "pretty slick new 
X      protocol" which is not significantly different from my own.
X      
X      Also, there is a catchy name - YMODEM. That means to some
X      that it is the  "next thing after XMODEM", and to others that it
X      is the Y(am)MODEM protocol.  I don't want to emphasize that too
X      much - out of fear that other mfgrs might think it is a
X      "competitive" protocol, rather than an "unaffiliated" protocol.
X      Chuck is currently selling a much-enhanced version of his
X      CP/M-80 C program YAM, calling it Professional Yam, and its 
X      for the PC - I'm using it right now.  VERY slick!  32K capture buffer,
X      script, scrolling, previously captured text search, plus
X      built-in commands for just about everything - directory (sorted
X      every which way), XMODEM, YMODEM, KERMIT, and ASCII file
X      upload/download, etc.  You can program it to "behave" with most
X      any system - for example when trying a number for CIS it detects
X      the "busy" string back from the modem and substitutes a diff
X      phone # into the dialing string and branches back to try it. 
X      
X      
X      
X      3.  XMODEM PROTOCOL ENHANCEMENTS
X      
X      This chapter discusses the protocol extensions to Ward Christensen's
X      1982 XMODEM protocol description document.
X      
X      The original document recommends the user be asked whether to continue
X      trying or abort after 10 retries.  Most programs no longer ask the
X      operator whether he wishes to keep retrying.  Virtually all correctable
X      errors are corrected within the first few retransmissions.  If
X      the line is so bad that ten attempts are insufficient, there is
X      a significant danger of undetected errors.  If the connection is
X      that bad, it's better to redial for a better connection, or
X      mail a floppy disk. 
X      
X      
X      
X      
X      
X      __________
X      
X       4. The file length, time, and file mode are optional.The pathname and
X          file length may be sent alone if desired.
X      
X      
X      
X      
X      Chapter   3                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                        6
X      
X      
X      
X      3.1  Graceful Abort
X      
X      The YAM and Professional-YAM X/YMODEM routines recognize a
X      sequence of two consecutive CAN (Hex 18) characters without modem
X      errors (overrun, framing, etc.) as a transfer abort command.  This
X      sequence is recognized when YAM is waiting for the beginning of a
X      packet or for an acknowledge to one that has been sent.  The
X      check for two consecutive CAN characters virtually eliminates the
X      possibility of a line hit aborting the transfer.  YAM sends
X      eight CAN characters when it aborts an XMODEM, YMODEM, or ZMODEM
X      protocol file transfer.  Pro-YAM then sends eight backspaces to delete
X      the CAN characters from the remote's keyboard input buffer, in
X      case the remote had already aborted the transfer and was
X      awaiting a keyboarded command.
X      
X      
X      3.2  CRC-16 Option
X      
X      The XMODEM protocol uses an optional two character CRC-16
X      instead of the one character arithmetic checksum used by the original
X      protocol and by most commercial implementations.  CRC-16
X      guarantees detection of all single and double bit errors, all errors
X      with an odd number of error bits, all burst errors of length 16 or
X      less, 99.9969% of all 17-bit error bursts, and 99.9984 per cent
X      of all possible longer error bursts.  By contrast, a double bit
X      error, or a burst error of 9 bits or more can sneak past the
X      XMODEM protocol arithmetic checksum.
X      
X      The XMODEM/CRC protocol is similar to the XMODEM protocol,
X      except that the receiver specifies CRC-16 by sending C (Hex
X      43) instead of NAK when requesting the FIRST packet.  A two
X      byte CRC is sent in place of the one byte arithmetic checksum.
X      
X      YAM's c option to the r command enables CRC-16 in single file
X      reception, corresponding to the original implementation in the
X      MODEM7 series programs.  This remains the default because many
X      commercial communications programs and bulletin board systems still do
X      not support CRC-16, especially those written in Basic or Pascal.
X      
X      XMODEM protocol with CRC is accurate provided both sender and
X      receiver both report a successful transmission. The protocol is robust
X      in the presence of characters lost by buffer overloading on
X      timesharing systems.
X      
X      The single character ACK/NAK responses generated by the
X      receiving program adapt well to split speed modems, where the reverse
X      channel is limited to ten per cent or less of he main channel's speed.
X      
X      XMODEM and YMODEM are half duplex protocols which do not attempt to
X      transmit information and control signals in both directions at the same
X      time.  This avoids buffer overrun problems that have been reported by
X      users attempting to exploit full duplex asynchronous file transfer
X      protocols such as Blast.
X      
X      Professional-YAM adds several proprietary logic enhancements to XMODEM's
X      
X      
X      
X      Chapter   3                                 XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                        7
X      
X      
X      
X      error detection and recovery.  These compatible enhancements eliminate
X      most of the bad file transfers other programs make when using
X      the XMODEM protocol under less than ideal conditions.
X      
X      
X      3.3  XMODEM-1k 1024 Byte Packet
X      
X      The choice to use 1024 byte packets is expressed to the sending
X      program on its command line or selection menu.[1] 1024 byte packets
X      improve throughput in many applications, but some environments cannot
X      accept 1024 byte bursts, especially minicomuters running 19.2kb
X      ports.
X      
X      An STX (02) replaces the SOH (01) at the beginning of the transmitted
X      block to notify the receiver of the longer packet length.  The
X      transmitted packet contains 1024 bytes of data.  The receiver
X      should be able to accept any mixture of 128 and 1024 byte
X      packets.  The packet number is incremented by one for each
X      packet regardless of the packet length. 
X      
X      The sender must not change between 128 and 1024 byte packet lengths if it
X      has not received a valid ACK for the current packet.  Failure to observe
X      this restriction allows certain transmission errors to pass undetected.
X      
X      If 1024 byte packets are being used, it is possible for a file to "grow"
X      up to the next multiple of 1024 bytes. This does not waste disk space if
X      the allocation granularity is 1k or greater.  With YMODEM batch
X      transmission, the optional file length transmitted in the file
X      name packet allows the receiver to discard the padding,
X      preserving the exact file length and contents.
X      
X      1024 byte packets may be used with batch file transmission or with single
X      file transmission.  CRC-16 should be used with the k option to preserve
X      data integrity over phone lines.  If a program wishes to enforce this
X      recommendation, it should cancel the transfer, then issue an informative
X      diagnostic message if the receiver requests checksum instead of CRC-16.
X      Under no circumstances may a sending program use CRC-16 unless the
X      receiver commands CRC-16.
X      
X      
X      4.  YMODEM Batch File Transmission
X      
X      The YMODEM Batch protocol is an extension to the XMODEM/CRC protocol that
X      allows 0 or more files to be transmitted with a single command.  (Zero
X      files may be sent if none of the requested files is accessible.) The
X      design approach of the YMODEM Batch protocol is to use the
X      normal routines for sending and receiving XMODEM packets in a
X      layered fashion similar to 
X      
X      
X      __________
X      
X       1. See "KMD/IMP Exceptions to YMODEM" below.
X      
X      
X      
X      
X      Chapter 4                                   XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference         09-11-86                      8
X      
X      
X      
X         Figure 1.  1024 byte Packets
X      
X          SENDER                                  RECEIVER
X                                                  "s -k foo.bar"
X          "foo.bar open x.x minutes"
X                                                  C
X          STX 01 FE Data[1024] CRC CRC
X                                                  ACK
X          STX 02 FD Data[1024] CRC CRC
X                                                  ACK
X          STX 03 FC Data[1000] CPMEOF[24] CRC CRC
X                                                  ACK
X          EOT
X                                                  ACK
X      
X         Figure 2.  Mixed 1024 and 128 byte Packets
X      
X          SENDER                                  RECEIVER
X                                                  "s -k foo.bar"
X          "foo.bar open x.x minutes"
X                                                  C
X          STX 01 FE Data[1024] CRC CRC
X                                                  ACK
X          STX 02 FD Data[1024] CRC CRC
X                                                  ACK
X          SOH 03 FC Data[128] CRC CRC
X                                                  ACK
X          SOH 04 FB Data[100] CPMEOF[28] CRC CRC
X                                                  ACK
X          EOT
X                                                  ACK
X      
X      packet switching methods.
X      
X      Why was it necessary to design a new batch protocol when one already
X      existed in MODEM7?[1] The batch file mode used by MODEM7 is unsuitable
X      because it does not permit full pathnames, file length, file date, or
X      other attribute information to be transmitted. Such a restrictive design,
X      hastily implemented with only CP/M in mind, would not have permitted
X      extensions to current areas of personal computing such as Unix, DOS, and
X      object oriented systems.  In addition, the MODEM7 batch file mode is
X      somewhat susceptible to transmission impairments.
X      
X      
X      
X      __________
X      
X       1. The MODEM7 batch protocol transmitted CP/M FCB bytes f1...f8 and
X          t1...t3 one character at a time.  The receiver echoed these bytes as
X          received, one at a time.
X      
X      
X      
X      
X      Chapter  4                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                        9
X      
X      
X      
X      As in the case of single a file transfer, the receiver initiates batch
X      file transmission by sending a "C" character (for CRC-16).
X      
X      The sender opens the first file and sends packet number 0 with the
X      following information.[2]
X      
X      Only the pathname (file name) part is required for batch transfers.
X      
X      To maintain upwards compatibility, all unused bytes in packet 0 must be
X      set to null.
X      
X      Pathname The pathname (conventionally, the file name) is sent as a null
X           terminated ASCII string.  This is the filename format used by the
X           handle oriented MSDOS(TM) functions and C library fopen functions.
X           An assembly language example follows:
X                      DB      'foo.bar',0
X           No spaces are included in the pathname.  Normally only the file name
X           stem (no directory prefix) is transmitted unless the sender has
X           selected YAM's f option to send the full pathname.  The source drive
X           (A:, B:, etc.) is never sent.
X      
X           Filename Considerations:
X      
X        + File names should be translated to lower case unless the sending
X         system supports upper/lower case file names. This is a
X         convenience for users of systems (such as Unix) which store
X         filenames in upper and lower case.
X      
X       + The receiver should accommodate file names in lower and upper
X         case.
X      
X       + When transmitting files between different operating systems,
X         file names must be acceptable to both the sender and receiving
X         operating systems.
X      
X           If directories are included, they are delimited by /; i.e.,
X           "subdir/foo" is acceptable, "subdir\foo" is not.
X      
X      Length The file length and each of the succeeding fields are optional.[3]
X           The length field is stored in the packet as a decimal
X           string counting the number of data bytes in the file.  The
X           file length does not include any CPMEOF (^Z) or other
X           garbage characters used to pad the last packet.
X      
X      
X      __________
X      
X       2. Only the data part of the packet is described here.
X      
X       3. Fields may not be skipped.
X      
X      
X      
X      
X      Chapter 4                               XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference  09-11-86                             10
X      
X      
X      
X           If the file being transmitted is growing during transmission, the
X           length field should be set to at least the final expected file
X           length, or not sent.
X      
X           The receiver stores the specified number of characters, discarding
X           any padding added by the sender to fill up the last packet.
X      
X      Modification Date The mod date is optional, and the filename and length
X           may be sent without requiring the mod date to be sent.
X      
X           Iff the modification date is sent, a single space separates the
X           modification date from the file length.
X      
X           The mod date is sent as an octal number giving the time the contents
X           of the file were last changed, measured in seconds from Jan 1 1970
X           Universal Coordinated Time (GMT). A date of 0 implies the
X           modification date is unknown and should be left as the date the file
X           is received.
X      
X           This standard format was chosen to eliminate ambiguities
X           arising from transfers between different time zones.
X      
X           Two Microsoft blunders complicate the use of modification dates in
X           file transfers with MSDOS(TM) systems.  The first is the lack of
X           timezone standardization in MS-DOS.  A file's creation time can not
X           be known unless the timezone of the system that wrote the file[4] is
X           known.  Unix solved this problem (for planet Earth, anyway) by
X           stamping files with Universal Time (GMT). Microsoft would have to
X           include the timezone of origin in the directory entries, but does
X           not.  Professional-YAM gets around this problem by using the z
X           parameter which is set to the number of minutes local time lags GMT.
X           For files known to originate from a different timezone, the -zT
X           option may be used to specify T as the timezone for an individual
X           file transfer.
X      
X           The second problem is the lack of a separate file creation date in
X           DOS.  Since some backup schemes used with DOS rely on the file
X           creation date to select files to be copied to the archive, back-
X           dating the file modification date could interfere with the safety of
X           the transferred files.  For this reason, Pro-YAM does not modify the
X           date of received files with the header information unless the d
X           numeric parameter is non zero.
X      
X      
X      
X      
X      
X      __________
X      
X       4. Not necessarily that of the transmitting system!
X      
X      
X      
X      
X      Chapter   4                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                       11
X      
X      
X      
X      Mode Iff the file mode is sent, a single space separates the file mode
X           from the modification date.  The file mode is stored as an octal
X           string.  Unless the file originated from a Unix system, the
X           file mode is set to 0.  rb(1) checks the file mode for the
X           0x8000 bit which indicates a Unix type regular file.  Files
X           with the 0x8000 bit set are assumed to have been sent from
X           another Unix (or similar) system which uses the same file
X           conventions.  Such files are not translated in any way.
X      
X      
X      Serial Number Iff the serial number is sent, a single space separates the
X           serial number from the file mode. The serial number of the
X           transmitting program is stored as an octal string.
X           Programs which do not have a serial number should omit this
X           field, or set it to 0.  The receiver's use of this field is
X           optional. 
X      
X      
X      Other Fields YMODEM was designed to allow additional header fields to be
X           added as above without creating compatibility problems with older
X           YMODEM programs.  Please contact Omen Technology if other fields are
X           needed for special application requirements.
X      
X      The rest of the packet is set to nulls.  This is essential to preserve
X      upward compatibility.[5]
X      
X      If the filename packet is received with a CRC or other error, a
X      restrnsmission is requested.  After the filename packet has been
X      received, it is ACK'ed if the write open is successful.  If the
X      file cannot be opened for writing, the receiver cancels the
X      transfer with CAN characters as described above.
X      
X      The receiver then initiates transfer of the file contents
X      according to the standard XMODEM/CRC protocol.
X      
X      After the file contents have been transmitted, the receiver
X      again asks for the next pathname.  Transmission of a null
X      pathname terminates batch file transmission.  Note that
X      transmission of no files is not necessarily an error. This is
X      possible if none of the files requested of the sender could be
X      opened for reading. 
X      
X      In batch transmission, the receiver automatically requests CRC-16.
X      
X      The Unix programs sz(1) and rz(1) included in the source code file
X      
X      
X      __________
X      
X       5. If, perchance, this information extends beyond 128 bytes (possible
X          with Unix 4.2 BSD extended file names), the packet should be
X          sent as a 1k packet as described above.
X      
X      
X      
X      
X      Chapter   4                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                       12
X      
X      
X      
X      RZSZ[12].SHQ (rzsz1.sh, rzsz2.sh) should answer other questions about
X      YMODEM batch protocol.
X      
X         Figure 3.  YMODEM Batch Transmission Session
X      
X          SENDER                                  RECEIVER
X                                                  "sb foo.*<CR>"
X          "sending in batch mode etc."
X                                                  C (command:rb)
X          SOH 00 FF foo.c NUL[123] CRC CRC
X                                                  ACK
X                                                  C
X          SOH 01 FE Data[128] CRC CRC
X                                                  ACK
X          STX 02 FD Data[1024] CRC CRC
X                                                  ACK
X          SOH 03 FC Data[128] CRC CRC
X                                                  ACK
X          SOH 04 FB Data[100] CPMEOF[28] CRC CRC
X                                                  ACK
X          EOT
X                                                  NAK
X          EOT
X                                                  ACK
X                                                  C
X          SOH 00 FF NUL[128] CRC CRC
X                                                  ACK
X      
X             Figure 4.  YMODEM Filename packet transmitted by sz
X      
X             -rw-r--r--  6347 Jun 17 1984 20:34 bbcsched.txt
X      
X             00 0100FF62 62637363 6865642E 74787400     |...bbcsched.txt.|
X             10 36333437 20333331 34373432 35313320     |6347 3314742513 |
X             20 31303036 34340000 00000000 00000000     |100644..........|
X             30 00000000 00000000 00000000 00000000
X             80 000000CA 56
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      Chapter   4                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                       13
X      
X      
X      
X            Figure 5.    YMODEM Header Information used by various programs
X      
X      _____________________________________________________________________
X      | Program   | Batch | Length | Date | Mode | S/N | 1k-Blk | g-Option |
X      |___________|_______|________|______|______|_____|________|__________|
X      |Unix rz/sz | yes   | yes    | yes  | yes  | no  | yes    | sb only  |
X      |___________|_______|________|______|______|_____|________|__________|
X      |VMS rb/sb  | yes   | yes    | no   | no   | no  | yes    | no       |
X      |___________|_______|________|______|______|_____|________|__________|
X      |Pro-YAM    | yes   | yes    | yes  | no   | yes | yes    | yes      |
X      |___________|_______|________|______|______|_____|________|__________|
X      |CP/M YAM   | yes   | no     | no   | no   | no  | yes    | no       |
X      |___________|_______|________|______|______|_____|________|__________|
X      |KMD/IMP    | yes   | ?      | no   | no   | no  | yes    | no       |
X      |___________|_______|________|______|______|_____|________|__________|
X      
X      4.1  KMD/IMP Exceptions to YMODEM
X      
X      KMD and IMP character sequence emitted by the receiver (CK) to
X      automatically trigger the use of 1024 byte packets as an alternative to
X      specifying this option on this command line.  Although this two character
X      sequence works well on single process micros in direct communication,
X      timesharing systems and packet switched networks can separate the
X      successive characters by several seconds, rendering this method
X      unreliable.
X      
X      Sending programs may detect the CK sequence if the operating enviornment
X      does not preclude reliable implementation.
X      
X      Receiving programs should retain the option of sending the
X      standard YMODEM C (not CK) trigger with the standard 10 second
X      timeout to insure compatibility with newer forms of
X      telecommunications technology. 
X      
X      
X      
X      5.  YMODEM-g File Transmission
X      
X      Developing technology is providing phone line data transmission at ever
X      higher speeds using very specialized techniques.  These high
X      speed modems, as well as session protocols such as X.PC, provide
X      high speed, error free communications at the expense of
X      considerably increased delay time. 
X      
X      This delay time is moderate compared to human interactions, but it
X      cripples the throughput of most error correcting protocols.
X      
X      The g option to YMODEM has proven effective under these circumstances.
X      The g option is driven by the receiver, which initiates the
X      batch transfer by transmitting a G instead of C.  When the
X      sender recognizes the G, it bypasses the usual wait for an ACK
X      to each transmitted packet, sending succeeding packets at full
X      speed, subject to XOFF/XON or other flow control exerted by the medium.
X      
X      
X      
X      Chapter   5                             XMODEM Protocol Enhancements
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                       14
X      
X      
X      
X      The sender expects an inital G to initiate the transmission of a
X      particular file, and also expects an ACK on the EOT sent at the end of
X      each file.  This synchronization allows the receiver time to open and
X      close files as necessary.
X      
X      If an error is detected in a YMODEM-g transfer, the receiver aborts the
X      transfer with the multiple CAN abort sequence. The ZMODEM protocol should
X      be used in applications that require both streaming throughput and error
X      recovery.
X      
X             Figure 6.  YMODEM-g Transmission Session
X      
X             SENDER                                      RECEIVER
X                                                 "sb foo.*<CR>"
X             "sending   in batch mode etc..."
X                                                 G (command:rb -g)
X             SOH 00 FF foo.c NUL[123]   CRC CRC
X                                                 G
X             SOH 01 FE Data[128] CRC CRC
X             STX 02 FD Data[1024] CRC   CRC
X             SOH 03 FC Data[128] CRC CRC
X             SOH 04 FB Data[100] CPMEOF[28] CRC CRC
X             EOT
X                                                 ACK
X                                                 G
X             SOH 00 FF NUL[128] CRC CRC
X      
X      
X      6.  XMODEM PROTOCOL OVERVIEW
X      
X      8/9/82 by Ward Christensen.
X      
X      I will maintain a master copy of this. Please pass on changes or
X      suggestions via CBBS/Chicago at (312) 545-8086, CBBS/CPMUG (312) 849-1132
X      or by voice at (312) 849-6279.
X      
X      6.1  Definitions
X      
X        <soh>   01H
X        <eot>   04H
X        <ack>   06H
X        <nak>   15H
X        <can>   18H
X        <C>     43H
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      
X      Chapter   6                                 Xmodem Protocol Overview
X      
X      
X      
X      
X      
X      
X      
X      X/YMODEM Protocol Reference        09-11-86                       15
X      
X      
X      
X      6.2  Transmission Medium Level Protocol
X      
X      Asynchronous, 8 data bits, no parity, one stop bit.
X      
X      The protocol imposes no restrictions on the contents of the data being
X      transmitted.  No control characters are looked for in the 128-byte data
X      messages.  Absolutely any kind of data may be sent - binary, ASCII, etc.
X      The protocol has not formally been adopted to a 7-bit environment for the
X      transmission of ASCII-only (or unpacked-hex) data , although it could be
X      simply by having both ends agree to AND the protocol-dependent data with
X      7F hex before validating it.  I specifically am referring to the
X      checksum, and the block numbers and their ones- complement.
X      
X      Those wishing to maintain compatibility of the CP/M file structure, i.e.
X      to allow modemming ASCII files to or from CP/M systems should follow this
X      data format:
X      
X         + ASCII tabs used (09H); tabs set every 8.
X      
X         + Lines terminated by CR/LF (0DH 0AH)
X      
X         + End-of-file indicated by ^Z, 1AH. (one or more)
X      
X         + Data is variable length, i.e. should be considered a continuous
X           stream of data bytes, broken into 128-byte chunks purely for the
X           purpose of transmission.
X      
X         + A CP/M "peculiarity": If the data ends exactly on a 128-byte
X           boundary, i.e. CR in 127, and LF in 128, a subsequent sector
X           containing the ^Z EOF character(s) is optional, but is preferred.
X           Some utilities or user programs still do not handle EOF without ^Zs.
SHAR_EOF
echo "End of part 6"
echo "File YMODEM.DOC is continued in part 7"
echo "7" > s2_seq_.tmp
exit 0