home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 260_01 / zmodem.doc < prev    next >
Text File  |  1988-02-25  |  48KB  |  1,585 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        ZMODEM PROTOCOL REFERENCE
  9.                                    The
  10.  
  11.                                   ZMODEM
  12.  
  13.                             Inter Application
  14.  
  15.                           File Transfer Protocol
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                               Chuck Forsberg
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.                  Please distribute as widely as possible.
  41.  
  42.                        Questions to Chuck Forsberg
  43.  
  44.  
  45.  
  46.  
  47.  
  48.                            Omen Technology Inc
  49.                    17505-V Northwest Sauvie Island Road
  50.                           Portland Oregon 97231
  51.                            Voice: 503-621-3406
  52.             Modem (Telegodzilla): 503-621-3746 Speed 1200,300
  53.                           Compuserve: 70715,131
  54.                     UUCP: ...!tektronix!reed!omen!caf
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.        1.  ACKNOWLEDGMENTS
  75.  
  76.        Encouragement and suggestions by Stuart Mathison, Thomas
  77.        Buck, John Wales, Ward Christensen, and Irv Hoff are
  78.        gratefully acknowledged.
  79.  
  80.  
  81.        2.  ROSETTA STONE
  82.  
  83.        Here are some definitions which reflect the current
  84.        vernacular in the computer media.  The attempt here is
  85.        identify the file transfer protocol rather than specific
  86.        programs.
  87.  
  88.        Frame   A ZMODEM frame consists of a header packet and 0 or
  89.                more data packets.
  90.  
  91.        Response Time This is the maximum expected delay between the
  92.                receiver sending a packet to the transmitter and
  93.                receiving the beginning of a response from the
  94.                transmitter.
  95.  
  96.        XMODEM  refers to the original 1979 file transfer etiquette
  97.                introduced by Ward Christensen's 1979 MODEM2
  98.                program.  It's also called the MODEM or MODEM2
  99.                protocol.  Some who are unaware of MODEM7's unusual
  100.                batch file mode call it MODEM7.  Other aliases
  101.                include "CP/M Users's Group" and "TERM II FTP 3".
  102.                This protocol is supported by every serious
  103.                communications program because of its universality,
  104.                simplicity, and reasonable performance.
  105.  
  106.        XMODEM/CRC replaces XMODEM's 1 byte checksum with a two byte
  107.                Cyclical Redundancy Check (CRC-16), giving modern
  108.                error detection protection.
  109.  
  110.        YMODEM  refers to the XMODEM/CRC protocol with the
  111.                throughput and/or batch transmission enhancements
  112.                described in YMODEM.DOC.
  113.  
  114.        ZMODEM  Zmodem is a second generation streaming protocol for
  115.                text and binary file transmission between
  116.                applications running on microcomputers and
  117.                mainframes.
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.        Chapter 3              DRAFT 3-24-86                       2
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.        DRAFT ZMODEM Protocol Ref 02-23-86                         3
  137.  
  138.  
  139.  
  140.        3.  YET ANOTHER PROTOCOL, AGAIN?
  141.  
  142.        Since its development half a decade ago, the Ward
  143.        Christensen modem protocol has enabled a wide variety of
  144.        computer systems to interchange data.  There is hardly a
  145.        communications program that doesn't at least claim to
  146.        support this protocol now called XMODEM.
  147.  
  148.        Advances in computing, modems and networking have spread the
  149.        XMODEM protocol far beyond the close coupled micro to micro
  150.        environment for which it was designed.  These application
  151.        have exposed some weaknesses.
  152.  
  153.           o+ The short block length causes throughput to suffer when
  154.             used with timesharing systems, packet switched
  155.             networks, satellite circuits, and buffered (error
  156.             correcting) modems.
  157.  
  158.           o+ The 8 bit arithmetic checksum and other aspects allows
  159.             line impairments to interfere with dependable, accurate
  160.             transfers.
  161.  
  162.           o+ Only one file can be sent per command.  The file name
  163.             has to be given twice, first to the sending program and
  164.             then again to the receiving program.
  165.  
  166.           o+ The transmitted file accumulates as many as 127
  167.             extraneous bytes.
  168.  
  169.           o+ The modification date of the file is lost.
  170.  
  171.        A number of other protocols have been developed over the
  172.        years, but none have displaced XMODEM to date.
  173.  
  174.           o+ Lack of public domain documentation and example
  175.             programs have kept proprietary protocols such as MNP,
  176.             Blast, and others tightly bound to the fortunes of
  177.             their suppliers.
  178.  
  179.           o+ Hardware and/or software complexity discourages the
  180.             widespread application of BISYNC, SDLC, HDLC, X.25, and
  181.             X.PC protocols.
  182.  
  183.           o+ Link level protocols such as X.25, X.PC, and MNP modems
  184.             do not manage application to application file
  185.             transfers.
  186.  
  187.           o+ The Kermit protocol was developed to allow file
  188.             transfers in environments hostile to XMODEM.  The
  189.             performance compromises necessary to accomodate non
  190.             transparent environments limit Kermit's efficiency.
  191.  
  192.  
  193.  
  194.        Chapter 3              DRAFT 3-24-86                       3
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.        DRAFT ZMODEM Protocol Ref 02-23-86                         4
  203.  
  204.  
  205.  
  206.             Even with completely transparent channels, Kermit
  207.             control character quoting limits the efficiency of
  208.             binary file transfers to about 75 per cent.
  209.  
  210.             Kermit Sliding Windows ("SuperKermit") improves
  211.             throughput over networks at the cost of increased
  212.             complexity.  SuperKermit state transitions are encoded
  213.             in a special language "wart" which requires a C
  214.             compiler.  The SuperKermit C code requires full duplex
  215.             communications and the ability to check for the
  216.             presence of characters in the input queue, precluding
  217.             its implementation on some operating systems.
  218.  
  219.        A number of extensions to the XMODEM protocol have been made
  220.        under the collective name YMODEM.
  221.  
  222.         o+ YMODEM-k reduces the overhead from transmission delays by
  223.           87 per cent compared to XMODEM, but network delays can
  224.           still degrade performance.
  225.  
  226.         o+ The handling of files that are not a multiple of 1024 or
  227.           128 bytes is awkward, especially if the file length is
  228.           not known, or changes during transmission.
  229.  
  230.         o+ YMODEM-g is essentially insensitive to network delays.
  231.           Because it does not support error recovery, YMODEM-g must
  232.           be used hardwired or with a link level protocol.
  233.  
  234.        Another XMODEM "extension" is protocol cheating, referred to
  235.        as "Turbo Download" and OverThruster.  These improve XMODEM
  236.        throughput at the expense of error recovery.
  237.  
  238.        The ZMODEM Protocol is proposed as a means of addressing the
  239.        weaknesses described above while maintaining as much of
  240.        XMODEM's simplicity and prior art as possible.
  241.  
  242.  
  243.  
  244.        4.  ZMODEM Protocol Design Criteria
  245.  
  246.        The design of a file transfer protocol is an engineering
  247.        compromise between conflicting requirements:
  248.  
  249.        4.1  Throughput
  250.  
  251.        ZMODEM is designed for optimum performance with minimum
  252.        degradation caused by delays introduced by packet switched
  253.        networks and timesharing systems.
  254.  
  255.        ZMODEM is optimized for best throughput where line hits
  256.        occur infrequently.  This assumption markedly reduces code
  257.  
  258.  
  259.  
  260.        Chapter 4              DRAFT 3-24-86                       4
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.        DRAFT ZMODEM Protocol Ref 02-23-86                         5
  269.  
  270.  
  271.  
  272.        complexity and memory requirements.
  273.  
  274.        It is assumed that many transfers will originate from a
  275.        timesharing system connected to a packet switched network.
  276.        ZMODEM provides features to allow for simple, efficient
  277.        implementation on timesharing hosts.
  278.  
  279.        File transfers begin immediately regardless of which program
  280.        is started first, no 10 second delay.
  281.  
  282.        4.2  Integrity and Robustness
  283.  
  284.        All packets are protected with 16 bit CRC.
  285.  
  286.        4.3  Ease of use
  287.  
  288.        File names need be entered only once.  Wild Card names may
  289.        be used with batch transfers.  Minimum keystrokes required
  290.        to initiate transfers.  ZMODEM steps down to X/YMODEM if the
  291.        other end does not support ZMODEM.
  292.  
  293.        4.4  Ease of implementation
  294.  
  295.        ZMODEM accomodates a wide variety of systems:
  296.  
  297.         o+ Microcomputers that cannot overlap disk and serial i/o
  298.  
  299.         o+ Microcomputers that cannot overlap serial send and
  300.           receive
  301.  
  302.         o+ Computers and/or networks requiring XON/XOFF flow control
  303.  
  304.         o+ Computers that cannot check the serial input queue for
  305.           the presence of data without having to wait for the data
  306.           to arrive.
  307.  
  308.        Although ZMODEM provides "hooks" for multiple "threads",
  309.        ZMODEM is not intended to replace link level protocols such
  310.        as X.25.  ZMODEM provides a near optimal general purpose
  311.        application to application file transfer protocol to be used
  312.        with link level protocols such as X.25, MNP, Fastlink, etc.
  313.  
  314.  
  315.        5.  PACKETIZATION
  316.  
  317.        ZMODEM uses packets somewhat different from those used in
  318.        X/YMODEM.  X/YMODEM type packets are not used for the
  319.        following reasons:
  320.  
  321.         o+ Block numbers are limited to 256
  322.  
  323.  
  324.  
  325.  
  326.        Chapter 5              DRAFT 3-24-86                       5
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.        DRAFT ZMODEM Protocol Ref 02-23-86                         6
  335.  
  336.  
  337.  
  338.         o+ No provision for variable length blocks
  339.  
  340.         o+ Line hits corrupt protocol signals, causing failed file
  341.           transfers.  In particular, modem errors sometimes
  342.           generate false block numbers, false EOTs and false ACKs.
  343.           False ACKs are the most troublesome as they cause the
  344.           sender to lose synchronization with the receiver.
  345.  
  346.           State of the art X/YMODEM programs such as Professional-
  347.           YAM overcome some of these weaknesses with clever
  348.           proprietary code, but a newer protocol is still useful.
  349.  
  350.         o+ It is difficult to determine the beginning and ends of
  351.           X/YMODEM blocks when they are corrupted by line hits.
  352.           This discourages rapid error recovery.
  353.  
  354.        5.1  Link Escape Encoding
  355.  
  356.        ZMODEM acheives data transparency by extending the 8 bit
  357.        character set (256 codes) with escape sequences based on the
  358.        ZMODEM data link escape character ZDLE.1
  359.  
  360.        Link Escape coding permits variable length data packets.  It
  361.        allows the beginning of packets to be detected without
  362.        special timing techniques, facilitating rapid error
  363.        recovery.
  364.  
  365.        Link Escape coding does add some overhead.  The worst case,
  366.        a file consisting entirely of ZDLE characters, would incur a
  367.        50% overhead.  The particular ZDLE character was chosen
  368.        after examining the character distributions of many types of
  369.        files used with personal computers.
  370.  
  371.        The ZDLE character is special.  ZDLE represents a control
  372.        sequence of some sort.  If a ZDLE character appears in the
  373.        data sent within a binary packet, it is prefixed with
  374.        another ZDLE.  An escaped ZDLE is counted once in the CRC.
  375.  
  376.        The current value for ZDLE is exclamation point (!).  Use of
  377.        a printing character as ZDLE allows application programs to
  378.        recognize HEX Header Packets.  This particular character was
  379.        chosen because it does not appear often in many types of
  380.        files likely to be transferred with this protocol.  In
  381.  
  382.  
  383.        __________
  384.  
  385.         1. This and other constants are defined in the _z_m_o_d_e_m._h
  386.            include file.  Please note that constants with a leading
  387.            0 are octal constants in C.
  388.  
  389.  
  390.  
  391.  
  392.        Chapter 5              DRAFT 3-24-86                       6
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.        DRAFT ZMODEM Protocol Ref 02-23-86                         7
  401.  
  402.  
  403.  
  404.        addition, no known timesharing system uses it for editing.
  405.  
  406.        5.2  Header Packet Information
  407.  
  408.        All ZMODEM frames begin with a header packet which may be
  409.        sent in binary or HEX form.  ZMODEM uses a single routine to
  410.        recognize binary and hex header packets.  Either form of the
  411.        header packet contains the same raw information:
  412.  
  413.         o+ A type byte 2 Future extensions to ZMODEM may use the
  414.           high order bits of the type byte to indicate thread
  415.           selection.
  416.  
  417.         o+ Four bytes of data indicating flags and/or numeric
  418.           quantities depending on the packet type
  419.  
  420.  
  421.                    Order of Bytes in Header Packet
  422.  
  423.                    T:  packet Type
  424.                    F0: Flags least significant byte
  425.                    P0: file Position least significant
  426.                    P3: file Position most significant
  427.  
  428.                            T  F3 F2 F1 F0
  429.                            --------------
  430.                            T  P0 P1 P2 P3
  431.  
  432.        5.3  Binary Header Packet
  433.  
  434.        A binary header packet is only sent by the sending program
  435.        to the receiving program.
  436.  
  437.        A binary header packet begins with the sequence ZPAD, ZDLE,
  438.        ZBIN.
  439.  
  440.        The frame type byte is ZDLE encoded.
  441.  
  442.        The four position/flags bytes are ZDLE encoded.
  443.  
  444.        A two byte CRC of the frame type and position/flag bytes is
  445.        ZDLE encoded.
  446.  
  447.        0 or more binary data packets will follow depending on the
  448.  
  449.  
  450.        __________
  451.  
  452.         2. The packet types are cardinal numbers beginning with 0
  453.            to minimize state transition table memory requirements.
  454.  
  455.  
  456.  
  457.  
  458.        Chapter 5              DRAFT 3-24-86                       7
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.        DRAFT ZMODEM Protocol Ref 02-23-86                         8
  467.  
  468.  
  469.  
  470.        frame type.
  471.  
  472.        The function _z_s_b_h_d_r transmits a binary header packet.  The
  473.        function _z_g_e_t_h_d_r receives a binary or hex header packet.
  474.  
  475.  
  476.        5.4  HEX Header Packet
  477.  
  478.        The receiver sends responses in hex header packets.
  479.  
  480.        Hex encoding is required to support XON/XOFF flow control.
  481.        Use of Kermit style encoding for control and paritied
  482.        characters was considered and rejected because of increased
  483.        possibility of interacting with some timesharing systems's
  484.        line edit functions.  Use of HEX packets from the receiving
  485.        program allows control characters to be used to interrupt
  486.        the sender when errors are detected.  Except for header
  487.        packet types that imply data packets to follow, a HEX header
  488.        packet may be used in place of a binary header packet.
  489.  
  490.        A hex header packet begins with the sequence ZPAD, ZPAD,
  491.        ZDLE, ZHEX.  The _z_g_e_t_h_d_r routine synchronizes in the ZPAD-
  492.        ZDELE sequence.  The extra ZPAD allows other parts of the
  493.        program to detect a ZMODEM packet and then call _z_g_e_t_h_d_r to
  494.        receive the packet.
  495.  
  496.        The type byte, the four position/flag bytes, and the CRC
  497.        thereof are sent in hex using the character set
  498.        01234567890abcdef.  Upper case hex digits are not allowed;
  499.        they would false trigger X/YMODEM programs.
  500.  
  501.        A carriage return, line feed, and XON are appended to the
  502.        HEX header packet but are not considered to be part of it.
  503.        The CR/LF aids debugging from printouts.  The XON releases
  504.        the sender from spurious XOFF flow control characters
  505.        generated by line noise, a common occurrence.
  506.  
  507.        0 or more HEX data packets will follow depending on the
  508.        frame type.
  509.  
  510.        The function _z_s_h_h_d_r sends a hex header packet.
  511.  
  512.        5.5  Binary Data Packets
  513.  
  514.        Binary data packets immediately follow the associated binary
  515.        header packet.  A binary data packet contains 0 to 1024
  516.        bytes of data.  Recommended length values are 256 bytes
  517.        below 4800 bps, 1024 above 4800 bps or when the data link is
  518.        known to be relatively error free.
  519.  
  520.        No padding is used with binary data packets.  The data bytes
  521.  
  522.  
  523.  
  524.        Chapter 5              DRAFT 3-24-86                       8
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.        DRAFT ZMODEM Protocol Ref 02-23-86                         9
  533.  
  534.  
  535.  
  536.        are ZDLE encoded and transmitted.  A ZDLE and frameend are
  537.        then sent, followed by two ZDLE encoded CRC bytes.  The CRC
  538.        accumulates the data bytes and frameend.
  539.  
  540.        The function _z_s_b_d_a_t_a sends a binary data packet.  The
  541.        function _z_r_b_d_a_t_a receives a binary data packet.
  542.  
  543.        5.6  HEX Data Packet
  544.  
  545.        The format of HEX data packets is not currently specified.
  546.        These would be used for server commands, etc.
  547.  
  548.  
  549.        6.  PROTOCOL TRANSACTION OVERVIEW
  550.  
  551.        As with the XMODEM recommendation, ZMODEM timing is receiver
  552.        driven.  The transmitter should not time out at all, except
  553.        to abort the program if no packets are received for an
  554.        extended period of time, say one minute.
  555.  
  556.        To start a ZMODEM file transfer session, the sending program
  557.        is called with the names of the desired file(s).
  558.  
  559.        The sending program sends the string "rz\r" and a single HEX
  560.        ZRQRINIT packet with data = 0.  The "rz" followed by
  561.        carriage return activates a ZMODEM receive program or
  562.        command if it were not already active.  If the receiving
  563.        program receives the ZRQRINIT packet, it totally ignores it
  564.        as the sending program will be responding to the RINIT
  565.        packet sent by the receiver.  The sending program should
  566.        also ignore this packet type, which would be an echo of its
  567.        own packet.
  568.  
  569.        Since the ZRQRINIT sequence contains no exotic control
  570.        characters, it can be accepted by the application program as
  571.        a command to begin ZMODEM receive.  The sequence prints as
  572.        "rz^M**!B00000000000000^M^J" where ^M represents CR and ^J
  573.        represents LF.
  574.  
  575.  
  576.        The sending program awaits a command from the receiving
  577.        program to start file transfers.  If a "C" or NAK is
  578.        received, an XMODEM or YMODEM file transfer is indicated,
  579.        and file transfer(s) use the X/YMODEM protocol.  Note: With
  580.        ZMODEM and YMODEM Batch, the sending program provides the
  581.        file name, but not with XMODEM.
  582.  
  583.        When the ZMODEM receive program starts, it immediately sends
  584.        a ZRINIT packet to initiate ZMODEM file transfers.  The
  585.        receive program resends the ZRINIT packet at _r_e_p_s_o_n_s_e _t_i_m_e
  586.        intervals for a suitable period of time (40 seconds typical)
  587.  
  588.  
  589.  
  590.        Chapter 6              DRAFT 3-24-86                       9
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.        DRAFT ZMODEM Protocol Ref 02-23-86                        10
  599.  
  600.  
  601.  
  602.        before falling back to X/YMODEM protocol.  If the receiving
  603.        program receives a ZRINIT packet, it is an echo indicating
  604.        that the sending program is not operational.
  605.  
  606.        If the receiving program receives a ZRQRINIT packet, it
  607.        ignores it.
  608.  
  609.        Eventually the sending program correctly receives the ZRINIT
  610.        packet.
  611.  
  612.               The sender may respond with an optional
  613.               ZCRYPT packet, which the receiver
  614.               acknowledges with a suitable frame.  (Details
  615.               to be worked out later)
  616.  
  617.        The sender may respond with an optional ZSINIT frame to set
  618.        the receiving program's Attention string.  The receiver
  619.        sends a ZACK packet in response.
  620.  
  621.        The sender then sends a ZFILE packet containing the file
  622.        name, file length, modification date, and other information
  623.        identical to that used by YMODEM Batch.
  624.  
  625.               The receiver may respond to this with a
  626.               ZGETCRC packet, which requires the sender to
  627.               permorm a CRC on the file and transmit same
  628.               with a ZCRC packet.  The receiver may use
  629.               this information to determine whether to
  630.               accept the file or skip it.
  631.  
  632.        The receiver may respond with a ZSKIP packet, which causes
  633.        the file to be passed over.
  634.  
  635.        A ZRPOS packet from the receiver initiates transmission of
  636.        the file data starting at the offset in the file specified
  637.        in the ZRPOS packet.  Normally the receiver specifies the
  638.        data transfer begin begin at offset 0 in the file.
  639.               The receiver may start the transfer further
  640.               down in the file.  This allows a file
  641.               transfer interrupted by a loss or carrier
  642.               or system crash to be completed on the next
  643.               connection without requiring the entire
  644.               file to be retransmitted.  If downloading a
  645.               file from a timesharing system that becomes
  646.               sluggish, the transfer can be interrupted
  647.               and resumed later with no loss of data.
  648.  
  649.        The sender sends a ZDATA header packet (with file
  650.        position) followed by one or more data packets.
  651.  
  652.        The receiver compares the file position in the ZDATA
  653.  
  654.  
  655.  
  656.        Chapter 6              DRAFT 3-24-86                      10
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.        DRAFT ZMODEM Protocol Ref 02-23-86                        11
  665.  
  666.  
  667.  
  668.        header with the number of characters successfully
  669.        received to the file.  If they do not agree, a ZRPOS
  670.        error response is generated to force the sender to the
  671.        right position within the file.
  672.  
  673.        A data packet terminated by ZCRCGO and CRC does not
  674.        elicit a response unless an error is detected; more data
  675.        packet(s) follow immediately.
  676.  
  677.               ZCRCQ data packets expect a ZACK response
  678.               (with the file offset) if no error,
  679.               otherwise a ZRPOS response (with the last
  680.               good file offset).  Another data packet
  681.               continues immediately.  ZCRCQ packets are
  682.               not used if the receiver does not indicate
  683.               FDX ability with the CANFDX bit.
  684.  
  685.        ZCRCW data packets expect a response before the next
  686.        frame is sent.  If the receiver does not indicate
  687.        overlapped I/O capability with the CANOVIO bit, the
  688.        sender uses the ZCRCW to allow the receiver to write its
  689.        buffer before sending more data.
  690.  
  691.               A zero length data packet may also be
  692.               used as a sending idle packet to prevent
  693.               the receiver from timing out in case data
  694.               is not immediately available to the
  695.               sender.
  696.  
  697.        In the absence of fatal error, the sender encounters
  698.        end of file.  If the end of file is encountered within
  699.        a frame, the frame is closed with a ZCRCE data packet
  700.        which does not elicit a response except in case of
  701.        error.
  702.  
  703.        The sender sends a ZEOF packet with the file ending
  704.        offset equal to the number of characters in the file.
  705.        The receiver compares this number with the number of
  706.        characters received.  If the receiver has received all
  707.        of the file, it closes the file and responds with
  708.        ZRINIT.  Otherwise the receiver sends ZRPOS with the
  709.        current file offset, forcing the sender to send the
  710.        missing data.
  711.  
  712.        After all files are processed, any further protocol
  713.        errors should not prevent the sending program from
  714.        returning with a success status.
  715.  
  716.        The sender closes the session with a ZEXIT header
  717.        packet.  The receiver acknowledges this with its own
  718.        ZEXIT packet.
  719.  
  720.  
  721.  
  722.        Chapter 6              DRAFT 3-24-86                      11
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.        DRAFT ZMODEM Protocol Ref 02-23-86                        12
  731.  
  732.  
  733.  
  734.        When the sender receives the acknowledging packet, it
  735.        sends two characters, "OO" (Over and Out) and exits to
  736.        the operating system or application that invoked it.
  737.        The receiver waits briefly for the "O" characters, then
  738.        exits whether they were received or not.
  739.  
  740.  
  741.        7.  STREAMING TECHNIQUE
  742.  
  743.        ZMODEM allows a choice of data streaming methodmethods
  744.        selected according to the limitations of the sending
  745.        program operating environment, receiving program
  746.        operating environment, and the transmission channel(s).
  747.  
  748.        If the computers can overlap serial I/O with disk I/O,
  749.        the sender begins data transmission with a ZDATA header
  750.        and continuous ZCRCG data packets.  When the receiver
  751.        detects an error, it sends the Attn sequence and a
  752.        ZRPOS packet to force the sender back to the correct
  753.        position within the file.
  754.  
  755.        At the end of each transmitted packet, the sender
  756.        checks for the presence of a error packet from the
  757.        receiver.  To do this, the sender may sample the
  758.        reverse data stream for the presence of a ZPAD
  759.        character.
  760.  
  761.        If the reverse data stream cannot be sampled without
  762.        entering an I/O wait, the receiver can interrupt the
  763.        sender with a control character, break, or combinations
  764.        thereof, as specified in the ZSINIT frame sent by the
  765.        sending program.
  766.  
  767.        If the receiver cannot overlap serial and disk I/O, it
  768.        uses the ZRINIT frame to specify a buffer length which
  769.        the sender will not overfill before sending a ZCRCW
  770.        packet.
  771.  
  772.  
  773.        8.  ATTENTION SEQUENCE
  774.  
  775.        The receiving program sends the Attn sequence whenever
  776.        it detects an error and needs to interrupt the sending
  777.        program.
  778.  
  779.        The default Attn string value is empty (no Attn
  780.        sequence).  The characters in the Attn string are
  781.        terminated with a null.  Two characters perform special
  782.        functions:
  783.  
  784.  
  785.  
  786.  
  787.  
  788.        Chapter 8              DRAFT 3-24-86                      12
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.        DRAFT ZMODEM Protocol Ref 02-23-86                        13
  797.  
  798.  
  799.  
  800.           o+ \335 Sends a break signal
  801.  
  802.           o+ \336 Pauses one second
  803.  
  804.  
  805.        9.  PACKET/FRAME TYPES
  806.  
  807.        The numeric values for the values shown in boldface are
  808.        given in _z_m_o_d_e_m._h.
  809.  
  810.        9.1  ZRQRINIT
  811.  
  812.        Sent by the sending program to call up the receiving
  813.        program.  P0...P3 are zero.
  814.  
  815.        9.2  ZRINIT
  816.  
  817.        Sent by the receiving program.  ZF0 and ZF1 contain
  818.        receiver capability flags:
  819.        #define CANFDX  1 /* Rx can send and receive FDX */
  820.        #define CANOVIO 2 /* Rx can receive during disk I/O */
  821.        #define CANBRK  4 /* Rx can send a break signal */
  822.        #define CANCRY  8 /* Receiver can decrypt */
  823.  
  824.        ZP0 and ZP1 contain the size of the receiver's buffer
  825.        in bytes, or 0 if overlapped I/O is allowed.
  826.  
  827.        9.3  ZSINIT
  828.  
  829.        Sender sends capability flags (none currently defined)
  830.        followed by a binary data packet terminated with ZCRCW.
  831.        Data contains the Attn string, maximum length 32 bytes.
  832.        The ZSINIT is only sent to programs that indicate the
  833.        ability to overlap serial data and disk I/O (CANOVIO).
  834.  
  835.        9.4  ZACK
  836.  
  837.        Acknowedgement to ZSINIT header packet or ZCRCW data
  838.        packet.  ZP0 to ZP3 contain file offset.
  839.  
  840.        9.5  ZFILE
  841.  
  842.        This packet indicates the beginning of a file
  843.        transmission attempt.  ZF0 and ZF1 contain special file
  844.        processing flags:
  845.  
  846.         o+ ZBIN This is a binary file
  847.        A ZCRCW data packet follows with file name, file
  848.        length, modification date, and other information
  849.        described in a later chapter.
  850.  
  851.  
  852.  
  853.  
  854.        Chapter 9              DRAFT 3-24-86                      13
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.        DRAFT ZMODEM Protocol Ref 02-23-86                        14
  863.  
  864.  
  865.  
  866.        9.6  ZSKIP
  867.  
  868.        Sent by the receiver in response to ZFILE, makes the
  869.        sender skip to the next file.
  870.  
  871.        9.7  ZNAK
  872.  
  873.        Indicates last packet header was garbled.  (See also
  874.        ZRPOS).
  875.  
  876.        9.8  ZABORT
  877.  
  878.        Sent by receiver to terminate batch file transfers when
  879.        requested by the user.  Sender initiates a ZFIN
  880.        sequence.1
  881.  
  882.        9.9  ZFIN
  883.  
  884.        Sent by sending program to terminate ZMODEM.  Receiver
  885.        responds with ZFIN.
  886.  
  887.        9.10  ZRPOS
  888.  
  889.        Sent by receiver to force file transfer to resume at
  890.        file offset given in ZP0...ZP3.
  891.  
  892.        9.11  ZDATA
  893.  
  894.        ZP0...ZP3 contain file offset.  One or more data
  895.        packets follow.
  896.  
  897.        9.12  ZEOF
  898.  
  899.        ZP0...ZP3 contain file offset.  Sender reports End of
  900.        File.
  901.  
  902.        9.13  ZFERR
  903.  
  904.        Error in reading or writing file, equivalent to ZABORT.
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.        __________
  914.  
  915.         1. Or ZCOMPL in case of server mode.
  916.  
  917.  
  918.  
  919.  
  920.        Chapter 9              DRAFT 3-24-86                      14
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.        DRAFT ZMODEM Protocol Ref 02-23-86                        15
  929.  
  930.  
  931.  
  932.        9.14  ZCRC
  933.  
  934.        Request (receiver) and response (sender) for file CRC.
  935.        ZP0 and ZP1 contain 16 bit file CRC.
  936.  
  937.        9.15  ZCRYPT
  938.  
  939.        Negotiation for encryption.
  940.  
  941.        9.16  ZCOMPL
  942.  
  943.        Server request now completed.
  944.  
  945.  
  946.        10.  Transaction
  947.  
  948.        A simple transaction, one file, no errors, overlapped
  949.        I/O:
  950.  
  951.        Sender          Receiver
  952.  
  953.                        ZRINIT
  954.  
  955.        ZFILE
  956.  
  957.                        ZRPOS
  958.  
  959.        ZDATA data ...
  960.        ZEOF
  961.  
  962.                        ZRINIT
  963.  
  964.        ZFIN
  965.  
  966.                        ZFIN
  967.  
  968.        OO
  969.  
  970.  
  971.  
  972.        11.  PERFORMANCE
  973.  
  974.        Some tests of ZMODEM protocol performance have been
  975.        made.  A PC-AT with SCO SYS V Xenix or DOS 3.1 was
  976.        connected to a PC with DOS 2.1 either directly at 9600
  977.        bps or with dial-up 1200 bps modems.  The ZMODEM
  978.        software was configured to use 1024 byte packet lengths
  979.        above 2400 bps, 256 otherwise.
  980.  
  981.        Because no time delays are necessary in normal file
  982.        transfers, per file negotiations are much faster than
  983.  
  984.  
  985.  
  986.        Chapter 11             DRAFT 3-24-86                      15
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.        DRAFT ZMODEM Protocol Ref 02-23-86                        16
  995.  
  996.  
  997.  
  998.        with YMODEM, the only observed impidiment being the
  999.        time required by the program(s) to update logging
  1000.        files.
  1001.  
  1002.        During a file transfer, a short line hit seen by the
  1003.        receiver usually induces a CRC error.  The interrupt
  1004.        packet is usually seen by the sender before the next
  1005.        packet is sent, and the resultant loss of data
  1006.        throughput averages about half a packet.  At 1200 bps
  1007.        this is would be about .75 second lost per hit.  At
  1008.        10-5 error rate, this would degrade throughput by about
  1009.        9 per cent.  The throughput degradation increases with
  1010.        the channel delay, as the packets in transit through
  1011.        the channel are discarded on error.
  1012.  
  1013.        A longer noise burst that affects both the receiver and
  1014.        the sender's reception of the interrupt packet usually
  1015.        causes the sender to remain silent until the receiver
  1016.        times out in 10 seconds.  If the round trip channel
  1017.        delay exceeds the receiver's 10 second timeout,
  1018.        recovery from this type of error may become difficult.
  1019.  
  1020.        Noise affecting only the sender is usually ignored,
  1021.        with one common exception.  Spurious XOFF characters
  1022.        generated by noise stop the sender until the receiver
  1023.        times out and sends an interrupt packet which concludes
  1024.        with an XON.
  1025.  
  1026.        In summation, ZMODEM performance in the presence of
  1027.        errors resembles that of X.PC and SuperKermit.  Short
  1028.        bursts cause minimuml data loss.  Long bursts (such as
  1029.        pulse dialing noises) often require a timeout error to
  1030.        restore the flow of data.
  1031.  
  1032.  
  1033.        12.  TABLES
  1034.  
  1035.                  Figure 1.  Protocol Overhead Information
  1036.  
  1037.        Figures are calculated for round trip delay times of 40
  1038.        milliseconds and 5 seconds.  A 102400 byte randomly
  1039.        distributed binary file is sent at 1200 bps 8 data
  1040.        bits, 1 stop bit.  The calculations assume no
  1041.        transmission errors.  For each of the protocols, only
  1042.        the per file functions are considered.  Processor and
  1043.        I/O overhead are not included.  YM-k refers to YMODEM
  1044.        with 1024 byte packets.  YM-g refers to the YMODEM "g"
  1045.        option.  ZMODEM uses 256 byte packets for this example.
  1046.        SuperKermit uses amximum packet size, 8 bit transparent
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.        Chapter 12             DRAFT 3-24-86                      16
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.        DRAFT ZMODEM Protocol Ref 02-23-86                        17
  1061.  
  1062.  
  1063.  
  1064.        transmission, no run length compression.
  1065.  
  1066.         Protocol     dump   XMODEM   YM-k    YM-G   ZMODEM   S-Kermit
  1067.        Round-Trips   -      803      103     5      5        5?
  1068.        Time@40ms     -      32s      4s      -      -        -
  1069.        Time@5s       -      4015s    515s    25s    25s      25
  1070.        Chars-Ovhd    -      4803     603     503    2000     7460
  1071.        Time@0s       853s   893s     858s    857s   870s     1135s
  1072.        Time@40ms     853s   925s     862s    857s   870s     1135s
  1073.        Time@5s       853s   5761s    1373s   882s   905s     1160s
  1074.  
  1075.  
  1076.                  Figure 2.  Transmission Time Comparision
  1077.        (5 second delay)
  1078.  
  1079.        **********************************************************
  1080.        XMODEM
  1081.        ************** YMODEM-K
  1082.        ************ Kermit Sliding Windows
  1083.        ********* YMODEM-G
  1084.        ********* ZMODEM
  1085.  
  1086.                Figure 3.  Y/ZMODEM Header Information usage
  1087.  
  1088.  
  1089.         Program     Batch   Length   Date   Mode   S/N   YMODEM-g   ZMODEM
  1090.        Unix rb/sb   yes     yes      yes    yes    no    sb only    no
  1091.        Unix rz/sz   yes     yes      yes    yes    no    sb only    yes
  1092.        VMS rb/sb    yes     yes      no     no     no    no         no
  1093.        Pro-YAM      yes     yes      yes    no     yes   yes        yes
  1094.        CP/M YAM     yes     no       no     no     no    no         no
  1095.        KMD/IMP      yes     no|-      no     no     no    no         no
  1096.        MEX          no      no       no     no     no    no         no
  1097.  
  1098.  
  1099.        13.  ZFILE FRAME FILE INFORMATION
  1100.  
  1101.        Only the pathname (file name) part is required for
  1102.        batch transfers.
  1103.  
  1104.        Pathname The pathname (conventionally, the file name)
  1105.             is sent as a null terminated ASCII string.  This
  1106.             is the filename format used by the handle oriented
  1107.             MSDOS(TM) functions and C library fopen functions.
  1108.             An assembly language example follows:
  1109.                           DB        'foo.bar',0
  1110.             No spaces are included in the pathname.  Normally
  1111.             only the file name stem (no directory prefix) is
  1112.             transmitted unless the sender has selected YAM's f
  1113.             option to send the full pathname.  The source
  1114.             drive (A:, B:, etc.) is never sent.
  1115.  
  1116.  
  1117.  
  1118.        Chapter 13             DRAFT 3-24-86                      17
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.        DRAFT ZMODEM Protocol Ref 02-23-86                        18
  1127.  
  1128.  
  1129.  
  1130.             Filename Considerations:
  1131.  
  1132.                o+ File names should be translated to lower case
  1133.                  unless the sending system supports
  1134.                  upper/lower case file names.  This is a
  1135.                  convenience for users of systems (such as
  1136.                  Unix) which store filenames in upper and
  1137.                  lower case.
  1138.  
  1139.                o+ The receiver should accommodate file names in
  1140.                  lower and upper case.
  1141.  
  1142.                o+ The rb(1) program on Unix systems normally
  1143.                  translates the filename to lower case unless
  1144.                  one or more letters in the filename are
  1145.                  already in lower case.
  1146.  
  1147.                o+ When transmitting files between different
  1148.                  operating systems, file names must be
  1149.                  acceptable to both the sender and receiving
  1150.                  operating systems.
  1151.             If directories are included, they are delimited by
  1152.             /; i.e., "subdir/foo" is acceptable, "subdir\foo"
  1153.             is not.
  1154.  
  1155.        Length The file length and each of the succeeding
  1156.             fields are optional.1 The length field is stored
  1157.             as a decimal string counting the number of data
  1158.             bytes in the file.
  1159.  
  1160.             With ZMODEM, the receiver uses the file length
  1161.             only for display (progress reporting) purposes;
  1162.             the actual length is determined by the data
  1163.             transfer.
  1164.  
  1165.        Modification Date A single space separates the
  1166.             modification date from the file length.
  1167.  
  1168.             The mod date is optional, and the filename and
  1169.             length may be sent without requiring the mod date
  1170.             to be sent.
  1171.  
  1172.             The mod date is sent as an octal number giving the
  1173.             time the contents of the file were last changed
  1174.             measured in seconds from Jan 1 1970 Universal
  1175.  
  1176.  
  1177.        __________
  1178.  
  1179.         1. Fields may not be skipped.
  1180.  
  1181.  
  1182.  
  1183.  
  1184.        Chapter 13             DRAFT 3-24-86                      18
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.        DRAFT ZMODEM Protocol Ref 02-23-86                        19
  1193.  
  1194.  
  1195.  
  1196.             Coordinated Time (GMT).  A date of 0 implies the
  1197.             modification date is unknown and should be left as
  1198.             the date the file is received.
  1199.  
  1200.             This standard format was chosen to eliminate
  1201.             ambiguities arising from transfers between
  1202.             different time zones.
  1203.  
  1204.             Two Microsoft blunders complicate the use of
  1205.             modification dates in file transfers with
  1206.             MSDOS(TM) systems.  The first is the lack of
  1207.             timezone standardization in MS-DOS.  A file's
  1208.             creation time can not be known unless the timezone
  1209.             of the system that wrote the file2 is known.  Unix
  1210.             solved this problem (for planet Earth, anyway) by
  1211.             stamping files with Universal Time (GMT).
  1212.             Microsoft would have to include the timezone of
  1213.             origin in the directory entries, but does not.
  1214.             Professional-YAM gets around this problem by using
  1215.             the z parameter which is set to the number of
  1216.             minutes local time lags GMT.  For files known to
  1217.             originate from a different timezone, the -zT
  1218.             option may be used to specify T as the timezone
  1219.             for an individual file transfer.
  1220.  
  1221.             The second problem is the lack of a separate file
  1222.             creation date in DOS.  Since some backup schemes
  1223.             used with DOS rely on the file creation date to
  1224.             select files to be copied to the archive, back-
  1225.             dating the file modification date could interfere
  1226.             with the safety of the transferred files.  For
  1227.             this reason, Professional-YAM does not modify the
  1228.             date of received files with the header information
  1229.             unless the d parameter is non zero.
  1230.  
  1231.  
  1232.        Mode A single space separates the file mode from the
  1233.             modification date.  The file mode is stored as an
  1234.             octal string.  Unless the file originated from a
  1235.             Unix system, the file mode is set to 0.  rb(1)
  1236.             checks the file mode for the 0x8000 bit which
  1237.             indicates a Unix type regular file.  Files with
  1238.             the 0x8000 bit set are assumed to have been sent
  1239.             from another Unix (or similar) system which uses
  1240.             the same file conventions.  Such files are not
  1241.  
  1242.  
  1243.        __________
  1244.  
  1245.         2. Not necessarily that of the transmitting system!
  1246.  
  1247.  
  1248.  
  1249.  
  1250.        Chapter 13             DRAFT 3-24-86                      19
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.        DRAFT ZMODEM Protocol Ref 02-23-86                        20
  1259.  
  1260.  
  1261.  
  1262.             translated in any way.
  1263.  
  1264.  
  1265.        Serial Number A single space separates the serial
  1266.             number from the file mode.  The serial number of
  1267.             the transmitting program is stored as an octal
  1268.             string.  Programs which do not have a serial
  1269.             number should omit this field, or set it to 0.
  1270.             The receiver's use of this field is optional.
  1271.        The file information is terminated by a null.  If only
  1272.        the pathname is sent, the pathname will be terminated
  1273.        by two nulls.  The length of the file information
  1274.        packet, including the trailing null, must not exceed
  1275.        1024 bytes; a typical length is less than 64 bytes.
  1276.  
  1277.  
  1278.        14.  MORE INFORMATION
  1279.  
  1280.        More information may be obtained by calling
  1281.        Telegodzilla at 503-621-3746.
  1282.  
  1283.        UUCP sites can obtain the nroff/troff source to this
  1284.        file with
  1285.               uucp omen!/usr/caf/public/zmodem.mm /tmp
  1286.        A continually updated list of available files is stored
  1287.        in /usr/spool/uucppublic/FILES.
  1288.  
  1289.        The following L.sys line calls Telegodzilla (Pro-YAM in
  1290.        host operation).  Telegodzilla waits for carriage
  1291.        returns to determine the incoming speed.  If none is
  1292.        detected, 1200 bps is assumed and a greeting is
  1293.        displayed.
  1294.  
  1295.        In response to "Name Please:" uucico gives the Pro-YAM
  1296.        "link" command as a user name.  The password (Giznoid)
  1297.        controls access to the Xenix system connected to the
  1298.        IBM PC's other serial port.  Communications between
  1299.        Pro-YAM and Xenix use 9600 bps; YAM converts this to
  1300.        the caller's speed.
  1301.  
  1302.        Finally, the calling uucico logs in as uucp.
  1303.  
  1304.        omen Any ACU 1200 1-503-621-3746 se:--se: link ord: Giznoid in:--in: uucp
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.        Chapter 15             DRAFT 3-24-86                      20
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.        DRAFT ZMODEM Protocol Ref 02-23-86                        21
  1325.  
  1326.  
  1327.  
  1328.        15.  ZMODEM Programs
  1329.  
  1330.        A demonstration version of Professional-YAM is
  1331.        available as YAMDEMO.LQR (A SQueezed Novosielski
  1332.        library).  This may be used to test ZMODEM and YMODEM
  1333.        implementations.
  1334.  
  1335.        Unix programs supporting the YMODEM protocol are
  1336.        available on Telegodzilla in the "upgrade" subdirectory
  1337.        as RBSB.SHQ (a SQueezed shell archive).  Most Unix like
  1338.        systems are supported, including V7, Sys III, 4.2 BSD,
  1339.        SYS V, Idris, Coherent, and Regulus.
  1340.  
  1341.        A version for VAX-VMS is available in VRBSB.SHQ, in the
  1342.        same directory.
  1343.  
  1344.        A CP/M assembly version is available as MODEM76.AQM and
  1345.        MODEM7.LIB.
  1346.  
  1347.        Irv Hoff has added YMODEM 1k packets and basic YMODEM
  1348.        batch transfers to the KMD and IMP series programs,
  1349.        which replace the XMODEM and MODEM7/MDM7xx series
  1350.        respectively.  Overlays are available for a wide
  1351.        variety of CP/M systems.
  1352.  
  1353.        MEX and MEX-PC also support some of the YMODEM
  1354.        extensions.
  1355.  
  1356.        Questions about YMODEM, the Professional-YAM
  1357.        communications program, and requests for evaluation
  1358.        copies may be directed to:
  1359.             Chuck Forsberg
  1360.             Omen Technology Inc
  1361.             17505-V Sauvie Island Road
  1362.             Portland Oregon 97231
  1363.             Voice: 503-621-3406
  1364.             Modem: 503-621-3746 Speed: 1200,300
  1365.             Usenet: ...!tektronix!reed!omen!caf
  1366.             Compuserve: 70715,131
  1367.             Source: TCE022
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.        Chapter 15             DRAFT 3-24-86                      21
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.                               CONTENTS
  1395.  
  1396.  
  1397.         1.  ACKNOWLEDGMENTS....................................   2
  1398.  
  1399.         2.  ROSETTA STONE......................................   2
  1400.  
  1401.         3.  YET ANOTHER PROTOCOL, AGAIN?.......................   3
  1402.  
  1403.         4.  ZMODEM Protocol Design Criteria....................   4
  1404.             4.1   Throughput...................................   4
  1405.             4.2   Integrity and Robustness.....................   5
  1406.             4.3   Ease of use..................................   5
  1407.             4.4   Ease of implementation.......................   5
  1408.  
  1409.         5.  PACKETIZATION......................................   5
  1410.             5.1   Link Escape Encoding.........................   6
  1411.             5.2   Header Packet Information....................   7
  1412.             5.3   Binary Header Packet.........................   7
  1413.             5.4   HEX Header Packet............................   8
  1414.             5.5   Binary Data Packets..........................   8
  1415.             5.6   HEX Data Packet..............................   9
  1416.  
  1417.         6.  PROTOCOL TRANSACTION OVERVIEW......................   9
  1418.  
  1419.         7.  STREAMING TECHNIQUE................................  12
  1420.  
  1421.         8.  ATTENTION SEQUENCE.................................  12
  1422.  
  1423.         9.  PACKET/FRAME TYPES.................................  13
  1424.             9.1   ZRQRINIT.....................................  13
  1425.             9.2   ZRINIT.......................................  13
  1426.             9.3   ZSINIT.......................................  13
  1427.             9.4   ZACK.........................................  13
  1428.             9.5   ZFILE........................................  13
  1429.             9.6   ZSKIP........................................  14
  1430.             9.7   ZNAK.........................................  14
  1431.             9.8   ZABORT.......................................  14
  1432.             9.9   ZFIN.........................................  14
  1433.             9.10  ZRPOS........................................  14
  1434.             9.11  ZDATA........................................  14
  1435.             9.12  ZEOF.........................................  14
  1436.             9.13  ZFERR........................................  14
  1437.             9.14  ZCRC.........................................  15
  1438.             9.15  ZCRYPT.......................................  15
  1439.             9.16  ZCOMPL.......................................  15
  1440.  
  1441.        10.  Transaction........................................  15
  1442.  
  1443.        11.  PERFORMANCE........................................  15
  1444.  
  1445.  
  1446.  
  1447.  
  1448.                                   - i -
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.        12.  TABLES.............................................  16
  1461.  
  1462.        13.  ZFILE FRAME FILE INFORMATION.......................  17
  1463.  
  1464.        14.  MORE INFORMATION...................................  20
  1465.  
  1466.        15.  ZMODEM Programs....................................  21
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.                                   - ii -
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.                              LIST OF FIGURES
  1530.  
  1531.  
  1532.        Figure 1.  Protocol Overhead Information................  16
  1533.  
  1534.        Figure 2.  Transmission Time Comparision................  17
  1535.  
  1536.        Figure 3.  Y/ZMODEM Header Information usage............  17
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.                                  - iii -
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  offse