Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ref:ymodem [2011/07/13 20:50] – digitalman | ref:ymodem [2011/07/13 22:02] (current) – digitalman | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== YMODEM ====== | + | ====== |
| - | XMODEM/ | + | |
| A compendium of documents describing the XMODEM and YMODEM File Transfer Protocols. | A compendium of documents describing the XMODEM and YMODEM File Transfer Protocols. | ||
| - | This document was originally edited and formatted (by Chuck Forsberg) 10-27-87. | + | This document was originally edited and formatted (by [[http:// |
| - | + | ||
| - | This document ported to Wiki syntax by Rob Swindell July-13-2011. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Please distribute as widely as possible. | + | |
| - | Questions to Chuck Forsberg | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Omen Technology Inc | + | |
| - | The High Reliability Software | + | |
| - | 17505-V Sauvie Island Road | + | |
| - | Portland Oregon 97231 | + | |
| - | VOICE: 503-621-3406 :VOICE | + | |
| - | Modem (TeleGodzilla): | + | |
| - | CompuServe: 70007, | + | |
| - | GEnie: CAF | + | |
| - | UUCP: ...!tektronix!reed!omen!caf | + | |
| + | This document was formatted for Wiki syntax by [[person: | ||
| ===== Tower of Babel ===== | ===== Tower of Babel ===== | ||
| Line 45: | Line 24: | ||
| Jeff Garbers (Crosstalk package development director) said it all: "With | Jeff Garbers (Crosstalk package development director) said it all: "With | ||
| protocols in the public domain, anyone who wants to dink around with them | protocols in the public domain, anyone who wants to dink around with them | ||
| - | can go ahead." | + | can go ahead." |
| Documents containing altered examples derived from YMODEM.DOC have added | Documents containing altered examples derived from YMODEM.DOC have added | ||
| Line 62: | Line 41: | ||
| ==== Definitions ==== | ==== Definitions ==== | ||
| - | | + | === ARC === |
| - | and extracts files from such archives. | + | ARC is a program that compresses one or more files into an archive |
| + | and extracts files from such archives. | ||
| + | |||
| + | === XMODEM === | ||
| - | | + | XMODEM refers to the file transfer etiquette introduced by Ward |
| - | Christensen' | + | Christensen' |
| - | Keith Petersen' | + | Keith Petersen' |
| - | for Remote CP/M (RCPM) systems. | + | for Remote CP/M (RCPM) systems. |
| - | MODEM2 protocol. | + | MODEM2 protocol. |
| - | file mode call it MODEM7. | + | file mode call it MODEM7. |
| - | Group" and "TERM II FTP 3" | + | Group" and "TERM II FTP 3" |
| - | because it is distinctive and partly because of media interest in | + | because it is distinctive and partly because of media interest in |
| - | bulletin board and RCPM systems where it was accessed with an | + | bulletin board and RCPM systems where it was accessed with an |
| - | " | + | " |
| - | communications program because of its universality, | + | communications program because of its universality, |
| - | and reasonable performance. | + | and reasonable performance. |
| - | | + | === XMODEM/CRC === |
| - | Redundancy Check (CRC-16), giving modern error detection | + | XMODEM/CRC replaces XMODEM' |
| - | protection. | + | Redundancy Check (CRC-16), giving modern error detection |
| + | protection. | ||
| - | | + | === XMODEM-1k |
| + | XMODEM-1k refers | ||
| - | | + | === YMODEM |
| - | transmission as described below. | + | YMODEM refers |
| - | BATCH. | + | transmission as described below. |
| + | BATCH. | ||
| - | | + | === YMODEM-g |
| + | YMODEM-g refers | ||
| - | | + | === True YMODEM(TM)=== |
| - | Technology has trademarked the term True YMODEM(TM) to represent | + | In an attempt to sort out the YMODEM Tower of Babel, Omen |
| - | the complete YMODEM protocol described in this document, including | + | Technology has trademarked the term True YMODEM(TM) to represent |
| - | pathname, length, and modification date transmitted in block 0. | + | the complete YMODEM protocol described in this document, including |
| - | Please contact Omen Technology about certifying programs for True | + | pathname, length, and modification date transmitted in block 0. |
| - | YMODEM(TM) compliance. | + | Please contact Omen Technology about certifying programs for True |
| + | YMODEM(TM) compliance. | ||
| - | | + | === ZMODEM === |
| - | that provides reliability, | + | ZMODEM uses familiar XMODEM/CRC and YMODEM technology in a new protocol |
| - | amenities appropriate to contemporary data communications. | + | that provides reliability, |
| + | amenities appropriate to contemporary data communications. | ||
| - | | + | === ZOO === |
| - | a "zoo archive" | + | Like ARC, ZOO is a program that compresses one or more files into |
| - | including Unix and VMS. | + | a "zoo archive" |
| + | including Unix and VMS. | ||
| | | ||
| ===== YMODEM Minimum Requirements ===== | ===== YMODEM Minimum Requirements ===== | ||
| Line 187: | Line 176: | ||
| ==== Some Messages from the Pioneer ==== | ==== Some Messages from the Pioneer ==== | ||
| + | < | ||
| #: 130940 S0/ | #: 130940 S0/ | ||
| Sb: my protocol | Sb: my protocol | ||
| - | Fm: Ward Christensen 76703, | + | Fm: Ward Christensen 76703,302 |
| To: all | To: all | ||
| - | Be aware the article((Infoworld April 29 p. 16)) DID quote me correctly in terms of the phrases | + | Be aware the article (Infoworld April 29 p. 16) DID quote me correctly |
| - | | + | |
| It was a quick hack I threw together, very unplanned (like everything I | It was a quick hack I threw together, very unplanned (like everything I | ||
| Line 209: | Line 199: | ||
| (2) propose an " | (2) propose an " | ||
| the form of Chuck Forsberg' | the form of Chuck Forsberg' | ||
| - | put it in the public domain, and wrote a batch protocol for Unix((VAX/VMS versions of these programs are also available)) | + | put it in the public domain, and wrote a batch protocol for Unix called |
| rb and sb (receive batch, send batch), which was basically XMODEM with | rb and sb (receive batch, send batch), which was basically XMODEM with | ||
| (a) a record 0 containing filename date time and size | (a) a record 0 containing filename date time and size | ||
| Line 235: | Line 225: | ||
| called rb and sb - receive batch and send batch. | called rb and sb - receive batch and send batch. | ||
| "block 0" which contains the filename, date, time, and size. | "block 0" which contains the filename, date, time, and size. | ||
| - | Unfortunately, | + | Unfortunately, |
| BUT, it is a nice way to overcome the kludgy "echo the chars of the name" | BUT, it is a nice way to overcome the kludgy "echo the chars of the name" | ||
| introduced with MODEM7. | introduced with MODEM7. | ||
| Line 254: | Line 244: | ||
| CIS it detects the " | CIS it detects the " | ||
| diff phone # into the dialing string and branches back to try it. | diff phone # into the dialing string and branches back to try it. | ||
| + | </ | ||
| ===== XMODEM Protocol Enhancements ===== | ===== XMODEM Protocol Enhancements ===== | ||
| Line 366: | Line 357: | ||
| receiver commands CRC-16. | receiver commands CRC-16. | ||
| - | | + | === Figure 1: XMODEM-1k Blocks |
| - | | + | |
| - | "s -k foo.bar" | + | "s -k foo.bar" |
| - | " | + | " |
| - | C | + | C |
| - | STX 01 FE Data[1024] CRC CRC | + | STX 01 FE Data[1024] CRC CRC |
| - | ACK | + | ACK |
| - | STX 02 FD Data[1024] CRC CRC | + | STX 02 FD Data[1024] CRC CRC |
| - | ACK | + | ACK |
| - | STX 03 FC Data[1000] CPMEOF[24] CRC CRC | + | STX 03 FC Data[1000] CPMEOF[24] CRC CRC |
| - | ACK | + | ACK |
| - | EOT | + | EOT |
| - | ACK | + | ACK |
| - | | + | === Figure |
| - | | + | |
| - | "s -k foo.bar" | + | "s -k foo.bar" |
| - | " | + | " |
| - | C | + | C |
| - | STX 01 FE Data[1024] CRC CRC | + | STX 01 FE Data[1024] CRC CRC |
| - | ACK | + | ACK |
| - | STX 02 FD Data[1024] CRC CRC | + | STX 02 FD Data[1024] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 03 FC Data[128] CRC CRC | + | SOH 03 FC Data[128] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 04 FB Data[100] CPMEOF[28] CRC CRC | + | SOH 04 FB Data[100] CPMEOF[28] CRC CRC |
| - | ACK | + | ACK |
| - | EOT | + | EOT |
| - | ACK | + | ACK |
| ===== YMODEM Batch File Transmission ===== | ===== YMODEM Batch File Transmission ===== | ||
| Line 424: | Line 415: | ||
| Only the pathname (file name) part is required for batch transfers. | Only the pathname (file name) part is required for batch transfers. | ||
| - | | + | To maintain upwards compatibility, |
| - | | + | |
| - | | + | === Pathname |
| - | | + | The pathname (conventionally, |
| - | | + | terminated ASCII string. |
| - | | + | handle oriented MSDOS(TM) functions and C library fopen functions. |
| - | DB ' | + | An assembly language example follows: |
| - | | + | DB ' |
| - | | + | No spaces are included in the pathname. |
| - | | + | stem (no directory prefix) is transmitted unless the sender has |
| - | | + | selected YAM's f option to send the full pathname. |
| - | + | (A:, B:, etc.) is not sent. | |
| - | Filename Considerations: | + | |
| + | == Filename Considerations == | ||
| * File names are forced to lower case unless the sending system supports upper/lower case file names. | * File names are forced to lower case unless the sending system supports upper/lower case file names. | ||
| Line 447: | Line 437: | ||
| * If directories are included, they are delimited by /; i.e., " | * If directories are included, they are delimited by /; i.e., " | ||
| - | ==== Length | + | === Length === |
| The file length and each of the succeeding fields are optional.((Fields may not be skipped.)) | The file length and each of the succeeding fields are optional.((Fields may not be skipped.)) | ||
| The length field is stored in the block as a decimal string counting | The length field is stored in the block as a decimal string counting | ||
| Line 461: | Line 451: | ||
| any padding added by the sender to fill up the last block. | any padding added by the sender to fill up the last block. | ||
| - | ==== Modification Date ==== | + | === Modification Date === |
| The mod date is optional, and the filename and length | The mod date is optional, and the filename and length | ||
| may be sent without requiring the mod date to be sent. | may be sent without requiring the mod date to be sent. | ||
| Line 478: | Line 468: | ||
| - | ==== Mode ==== | + | === Mode === |
| If the file mode is sent, a single space separates the file mode | If the file mode is sent, a single space separates the file mode | ||
| from the modification date. The file mode is stored as an octal | from the modification date. The file mode is stored as an octal | ||
| Line 489: | Line 479: | ||
| - | ==== Serial Number | + | === Serial Number === |
| If the serial number is sent, a single space separates the | If the serial number is sent, a single space separates the | ||
| serial number from the file mode. The serial number of the | serial number from the file mode. The serial number of the | ||
| Line 497: | Line 487: | ||
| - | ==== Other Fields | + | === Other Fields === |
| YMODEM was designed to allow additional header fields to be | YMODEM was designed to allow additional header fields to be | ||
| added as above without creating compatibility problems with older | added as above without creating compatibility problems with older | ||
| Line 528: | Line 518: | ||
| RZSZ.ZOO should answer other questions about YMODEM batch protocol. | RZSZ.ZOO should answer other questions about YMODEM batch protocol. | ||
| - | | + | === Figure 3: YMODEM Batch Transmission Session |
| - | | + | |
| - | "sb foo.*< | + | "sb foo.*< |
| - | " | + | " |
| - | C (command: | + | C (command: |
| - | SOH 00 FF foo.c NUL[123] CRC CRC | + | SOH 00 FF foo.c NUL[123] CRC CRC |
| - | ACK | + | ACK |
| - | C | + | C |
| - | SOH 01 FE Data[128] CRC CRC | + | SOH 01 FE Data[128] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 03 FC Data[128] CRC CRC | + | SOH 03 FC Data[128] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 04 FB Data[100] CPMEOF[28] CRC CRC | + | SOH 04 FB Data[100] CPMEOF[28] CRC CRC |
| - | ACK | + | ACK |
| - | EOT | + | EOT |
| - | NAK | + | NAK |
| - | EOT | + | EOT |
| - | ACK | + | ACK |
| - | C | + | C |
| - | SOH 00 FF NUL[128] CRC CRC | + | SOH 00 FF NUL[128] CRC CRC |
| - | ACK | + | ACK |
| - | | + | === Figure 4: YMODEM Batch Transmission Session-1k Blocks |
| - | | + | |
| - | "sb -k foo.*< | + | "sb -k foo.*< |
| - | " | + | " |
| - | C (command: | + | C (command: |
| - | SOH 00 FF foo.c NUL[123] CRC CRC | + | SOH 00 FF foo.c NUL[123] CRC CRC |
| - | ACK | + | ACK |
| - | C | + | C |
| - | STX 02 FD Data[1024] CRC CRC | + | STX 02 FD Data[1024] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 03 FC Data[128] CRC CRC | + | SOH 03 FC Data[128] CRC CRC |
| - | ACK | + | ACK |
| - | SOH 04 FB Data[100] CPMEOF[28] CRC CRC | + | SOH 04 FB Data[100] CPMEOF[28] CRC CRC |
| - | ACK | + | ACK |
| - | EOT | + | EOT |
| - | NAK | + | NAK |
| - | EOT | + | EOT |
| - | ACK | + | ACK |
| - | C | + | C |
| - | SOH 00 FF NUL[128] CRC CRC | + | SOH 00 FF NUL[128] CRC CRC |
| - | ACK | + | ACK |
| - | Figure 5. | + | === Figure 5: YMODEM Filename block transmitted by sz === |
| + | < | ||
| + | -rw-r--r-- | ||
| - | | + | |
| - | + | 10 36333437 20333331 34373432 35313320 | |
| - | 00 0100FF62 62637363 6865642E 74787400 | + | 20 31303036 34340000 00000000 00000000 |
| - | | + | 30 00000000 00000000 00000000 00000000 |
| - | | + | 40 00000000 00000000 00000000 00000000 |
| - | | + | 50 00000000 00000000 00000000 00000000 |
| - | | + | 60 00000000 00000000 00000000 00000000 |
| - | | + | 70 00000000 00000000 00000000 00000000 |
| - | | + | 80 000000CA 56 |
| - | | + | </ |
| - | | + | === Figure 6: YMODEM Header Information and Features |
| - | + | ||
| - | Figure 6. | + | |
| _____________________________________________________________ | _____________________________________________________________ | ||
| Line 606: | Line 596: | ||
| |___________|________|______|______|_____|________|__________| | |___________|________|______|______|_____|________|__________| | ||
| - | === KMD/IMP Exceptions to YMODEM === | + | ==== KMD/IMP Exceptions to YMODEM |
| - | | + | KMD and IMP use a " |
| - | trigger the use of 1024 byte blocks as an alternative to specifying this | + | trigger the use of 1024 byte blocks as an alternative to specifying this |
| - | option to the sending program. | + | option to the sending program. |
| - | well on single process micros in direct communication, | + | well on single process micros in direct communication, |
| - | and packet switched networks can separate the successive characters by | + | and packet switched networks can separate the successive characters by |
| - | several seconds, rendering this method unreliable. | + | several seconds, rendering this method unreliable. |
| - | | + | Sending programs may detect the CK sequence if the operating enviornment |
| - | does not preclude reliable implementation. | + | does not preclude reliable implementation. |
| - | | + | Instead of the standard YMODEM file length, KMD and IMP transmit the CP/M |
| - | record count in the last two bytes of the header block. | + | record count in the last two bytes of the header block. |
| + | ===== YMODEM-g File Transmission ===== | ||
| + | Developing technology is providing phone line data transmission at ever | ||
| + | higher speeds using very specialized techniques. | ||
| + | as well as session protocols such as X.PC, provide high speed, nearly | ||
| + | error free communications at the expense of considerably increased delay | ||
| + | time. | ||
| + | This delay time is moderate compared to human interactions, | ||
| + | cripples the throughput of most error correcting protocols. | ||
| + | The g option to YMODEM has proven effective under these circumstances. | ||
| + | The g option is driven by the receiver, which initiates the batch transfer | ||
| + | by transmitting a G instead of C. When the sender recognizes the G, it | ||
| + | bypasses the usual wait for an ACK to each transmitted block, sending | ||
| + | succeeding blocks at full speed, subject to XOFF/XON or other flow control | ||
| + | exerted by the medium. | ||
| + | The sender expects an inital G to initiate the transmission of a | ||
| + | particular file, and also expects an ACK on the EOT sent at the end of | ||
| + | each file. This synchronization allows the receiver time to open and | ||
| + | close files as necessary. | ||
| + | If an error is detected in a YMODEM-g transfer, the receiver aborts the | ||
| + | transfer with the multiple CAN abort sequence. | ||
| + | be used in applications that require both streaming throughput and error | ||
| + | recovery. | ||
| + | === Figure 7: YMODEM-g Transmission Session ==== | ||
| + | SENDER | ||
| + | "sb foo.*< | ||
| + | " | ||
| + | G (command:rb -g) | ||
| + | SOH 00 FF foo.c NUL[123] CRC CRC | ||
| + | G | ||
| + | SOH 01 FE Data[128] CRC CRC | ||
| + | STX 02 FD Data[1024] CRC CRC | ||
| + | SOH 03 FC Data[128] CRC CRC | ||
| + | SOH 04 FB Data[100] CPMEOF[28] CRC CRC | ||
| + | EOT | ||
| + | ACK | ||
| + | G | ||
| + | SOH 00 FF NUL[128] CRC CRC | ||
| - | Chapter 6 XMODEM Protocol | + | ===== XMODEM Protocol |
| + | 8/9/82 by Ward Christensen. | ||
| + | I will maintain a master copy of this. Please pass on changes or | ||
| + | suggestions via CBBS/ | ||
| + | or by voice at (312) 849-6279. | ||
| + | ==== Definitions ==== | ||
| + | <soh> 01H | ||
| + | <eot> 04H | ||
| + | <ack> 06H | ||
| + | <nak> 15H | ||
| + | <can> 18H | ||
| + | < | ||
| + | ==== Transmission Medium Level Protocol ==== | ||
| - | X/YMODEM Protocol Reference | + | Asynchronous, |
| + | The protocol imposes no restrictions on the contents of the data being | ||
| + | transmitted. | ||
| + | messages. | ||
| + | The protocol has not formally been adopted to a 7-bit environment for the | ||
| + | transmission of ASCII-only (or unpacked-hex) data , although it could be | ||
| + | simply by having both ends agree to AND the protocol-dependent data with | ||
| + | 7F hex before validating it. I specifically am referring to the checksum, | ||
| + | and the block numbers and their ones- complement. | ||
| + | Those wishing to maintain compatibility of the CP/M file structure, i.e. | ||
| + | to allow modemming ASCII files to or from CP/M systems should follow this | ||
| + | data format: | ||
| - | 6. YMODEM-g File Transmission | + | |
| - | + | | |
| - | Developing technology is providing phone line data transmission at ever | + | |
| - | higher speeds using very specialized techniques. | + | |
| - | as well as session protocols such as X.PC, provide high speed, nearly | + | |
| - | error free communications at the expense of considerably increased delay | + | |
| - | time. | + | |
| - | + | === Figure 8: XMODEM Message Block Level Protocol | |
| - | This delay time is moderate compared to human interactions, | + | |
| - | cripples the throughput of most error correcting protocols. | + | |
| - | + | ||
| - | The g option to YMODEM has proven effective under these circumstances. | + | |
| - | The g option is driven by the receiver, which initiates the batch transfer | + | |
| - | by transmitting a G instead of C. When the sender recognizes the G, it | + | |
| - | bypasses the usual wait for an ACK to each transmitted block, sending | + | |
| - | succeeding blocks at full speed, subject to XOFF/XON or other flow control | + | |
| - | exerted by the medium. | + | |
| - | + | ||
| - | The sender expects an inital G to initiate the transmission of a | + | |
| - | particular file, and also expects an ACK on the EOT sent at the end of | + | |
| - | each file. This synchronization allows the receiver time to open and | + | |
| - | close files as necessary. | + | |
| - | + | ||
| - | If an error is detected in a YMODEM-g transfer, the receiver aborts the | + | |
| - | transfer with the multiple CAN abort sequence. | + | |
| - | be used in applications that require both streaming throughput and error | + | |
| - | recovery. | + | |
| - | + | ||
| - | Figure 7. YMODEM-g Transmission Session | + | |
| - | + | ||
| - | SENDER | + | |
| - | "sb foo.*< | + | |
| - | " | + | |
| - | G (command:rb -g) | + | |
| - | SOH 00 FF foo.c NUL[123] CRC CRC | + | |
| - | G | + | |
| - | SOH 01 FE Data[128] CRC CRC | + | |
| - | STX 02 FD Data[1024] CRC CRC | + | |
| - | SOH 03 FC Data[128] CRC CRC | + | |
| - | SOH 04 FB Data[100] CPMEOF[28] CRC CRC | + | |
| - | EOT | + | |
| - | ACK | + | |
| - | G | + | |
| - | SOH 00 FF NUL[128] CRC CRC | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 6 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 7. XMODEM PROTOCOL OVERVIEW | + | |
| - | + | ||
| - | 8/9/82 by Ward Christensen. | + | |
| - | + | ||
| - | I will maintain a master copy of this. Please pass on changes or | + | |
| - | suggestions via CBBS/ | + | |
| - | or by voice at (312) 849-6279. | + | |
| - | + | ||
| - | 7.1 Definitions | + | |
| - | + | ||
| - | <soh> 01H | + | |
| - | <eot> 04H | + | |
| - | <ack> 06H | + | |
| - | <nak> 15H | + | |
| - | <can> 18H | + | |
| - | < | + | |
| - | + | ||
| - | + | ||
| - | 7.2 Transmission Medium Level Protocol | + | |
| - | + | ||
| - | Asynchronous, | + | |
| - | + | ||
| - | The protocol imposes no restrictions on the contents of the data being | + | |
| - | transmitted. | + | |
| - | messages. | + | |
| - | The protocol has not formally been adopted to a 7-bit environment for the | + | |
| - | transmission of ASCII-only (or unpacked-hex) data , although it could be | + | |
| - | simply by having both ends agree to AND the protocol-dependent data with | + | |
| - | 7F hex before validating it. I specifically am referring to the checksum, | + | |
| - | and the block numbers and their ones- complement. | + | |
| - | + | ||
| - | Those wishing to maintain compatibility of the CP/M file structure, i.e. | + | |
| - | to allow modemming ASCII files to or from CP/M systems should follow this | + | |
| - | data format: | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | stream of data bytes, broken into 128-byte chunks purely for the | + | |
| - | purpose of transmission. | + | |
| - | + | ||
| - | | + | |
| - | boundary, i.e. CR in 127, and LF in 128, a subsequent sector | + | |
| - | containing the ^Z EOF character(s) is optional, but is preferred. | + | |
| - | Some utilities or user programs still do not handle EOF without ^Zs. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 7 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | | + | |
| - | "short block" | + | |
| - | Figure 8. | + | |
| Each block of the transfer looks like: | Each block of the transfer looks like: | ||
| Line 789: | Line 712: | ||
| < | < | ||
| - | 7.3 | + | ==== File Level Protocol==== |
| - | + | ||
| - | 7.3.1 Common_to_Both_Sender_and_Receiver | + | |
| - | All errors are retried 10 times. | + | |
| - | (i.e. NOT with XMODEM), a message is typed after 10 errors asking the | + | |
| - | operator whether to "retry or quit" | + | |
| - | + | ||
| - | Some versions of the protocol use < | + | |
| - | This was never adopted as a standard, as having a single " | + | |
| - | makes the transmission susceptible to false termination due to an < | + | |
| - | <nak> or <soh> being corrupted into a <can> and aborting transmission. | + | |
| - | + | ||
| - | The protocol may be considered " | + | |
| - | not automatically re-transmit, | + | |
| - | implementations. | + | |
| - | + | ||
| - | + | ||
| - | 7.3.2 Receive_Program_Considerations | + | |
| - | The receiver has a 10-second timeout. | + | |
| - | times out. The receiver' | + | |
| - | transmitter to start. | + | |
| - | immediately, | + | |
| - | second timeout. | + | |
| - | seconds in case the sender wasn't ready. | + | |
| - | + | ||
| - | Once into a receiving a block, the receiver goes into a one-second timeout | + | |
| - | for each character and the checksum. | + | |
| - | block for any reason (invalid header, timeout receiving data), it must | + | |
| - | wait for the line to clear. | + | |
| - | + | ||
| - | Synchronizing: | + | |
| - | expected one, in which case everything is fine; or 2) a repeat of the | + | |
| - | previously received block. | + | |
| - | indicates that the receivers <ack> got glitched, and the sender re- | + | |
| - | transmitted; | + | |
| - | synchronization, | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 7 | + | |
| - | + | ||
| - | + | ||
| + | === Common_to_Both_Sender_and_Receiver === | ||
| + | All errors are retried 10 times. | ||
| + | (i.e. NOT with XMODEM), a message is typed after 10 errors asking the | ||
| + | operator whether to "retry or quit". | ||
| + | Some versions of the protocol use < | ||
| + | This was never adopted as a standard, as having a single " | ||
| + | makes the transmission susceptible to false termination due to an <ack> | ||
| + | <nak> or <soh> being corrupted into a <can> and aborting transmission. | ||
| + | The protocol may be considered " | ||
| + | not automatically re-transmit, | ||
| + | implementations. | ||
| - | X/YMODEM Protocol Reference | ||
| + | === Receive_Program_Considerations === | ||
| + | The receiver has a 10-second timeout. | ||
| + | times out. The receiver' | ||
| + | transmitter to start. | ||
| + | immediately, | ||
| + | second timeout. | ||
| + | seconds in case the sender wasn't ready. | ||
| + | Once into a receiving a block, the receiver goes into a one-second timeout | ||
| + | for each character and the checksum. | ||
| + | block for any reason (invalid header, timeout receiving data), it must | ||
| + | wait for the line to clear. | ||
| - | | + | == Synchronizing == |
| + | If a valid block number is received, it will be: 1) the | ||
| + | expected one, in which case everything is fine; or 2) a repeat of the | ||
| + | previously received block. | ||
| + | indicates that the receivers <ack> got glitched, and the sender re- | ||
| + | transmitted; | ||
| + | synchronization, | ||
| + | that looked like an < | ||
| - | 7.3.3 | + | === Sending_program_considerations |
| - | While waiting for transmission to begin, the sender has only a single very | + | While waiting for transmission to begin, the sender has only a single very |
| - | long timeout, say one minute. | + | long timeout, say one minute. |
| - | 10 second timeout before retrying. | + | 10 second timeout before retrying. |
| - | the protocol be completely receiver-driven. | + | the protocol be completely receiver-driven. |
| - | existing programs. | + | existing programs. |
| - | | + | When the sender has no more data, it sends an < |
| - | resending the <eot> if it doesn' | + | resending the <eot> if it doesn' |
| - | receiver-driven, | + | receiver-driven, |
| - | timeout to abort. | + | timeout to abort. |
| - | | + | Here is a sample of the data flow, sending a 3-block message. |
| - | the two most common line hits - a garbaged block, and an <ack> reply | + | the two most common line hits - a garbaged block, and an <ack> reply |
| - | getting garbaged. | + | getting garbaged. |
| - | | + | === Figure 9: Data flow including Error Recovery |
| SENDER | SENDER | ||
| Line 880: | Line 789: | ||
| (finished) | (finished) | ||
| - | 7.4 | + | ==== Programming Tips ==== |
| - | | + | 1. The character-receive subroutine should be called with a parameter specifying the number of seconds to wait. The receiver should first call it with a time of 10, then <nak> and try again, 10 times. |
| - | specifying the number of seconds to wait. The receiver should first | + | |
| - | call it with a time of 10, then <nak> and try again, 10 times. | + | |
| - | After receiving the < | + | After receiving the < |
| - | | + | receive subroutine with a 1-second timeout, for the remainder of the |
| - | | + | message and the < |
| - | | + | timing out of this implies a serious like glitch that caused, say, |
| - | | + | 127 characters to be seen instead of 128. |
| + | 2. When the receiver wishes to < | ||
| + | The most common technique is for " | ||
| + | receive subroutine, specifying a 1-second timeout, | ||
| + | )) and looping | ||
| + | back to PURGE until a timeout occurs. | ||
| + | ensuring the other end will see it. | ||
| - | Chapter 7 | + | 3. You may wish to add code recommended by John Mahr to your character receive routine - to set an error flag if the UART shows framing |
| + | ===== XMODEM/CRC Overview ===== | ||
| + | Original 1/13/85 by John Byrns -- CRC option. | ||
| + | Please pass on any reports of errors in this document or suggestions for | ||
| + | improvement to me via Ward' | ||
| + | The CRC used in the Modem Protocol is an alternate form of block check | ||
| + | which provides more robust error detection than the original checksum. | ||
| + | Andrew S. Tanenbaum says in his book, Computer Networks, that the CRC- | ||
| + | CCITT used by the Modem Protocol will detect all single and double bit | ||
| + | errors, all errors with an odd number of bits, all burst errors of length | ||
| + | 16 or less, 99.997% of 17-bit error bursts, and 99.998% of 18-bit and | ||
| + | longer bursts.((This reliability figure is misleading because XMODEM' | ||
| + | The changes to the Modem Protocol to replace the checksum with the CRC are | ||
| + | straight forward. If that were all that we did we would not be able to | ||
| + | communicate between a program using the old checksum protocol and one | ||
| + | using the new CRC protocol. An initial handshake was added to solve this | ||
| + | problem. The handshake allows a receiving program with CRC capability to | ||
| + | determine whether the sending program supports the CRC option, and to | ||
| + | switch it to CRC mode if it does. This handshake is designed so that it | ||
| + | will work properly with programs which implement only the original | ||
| + | protocol. A description of this handshake is presented in section 10. | ||
| - | X/YMODEM Protocol Reference | + | === Figure 10: Message Block Level Protocol, CRC mode === |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + When the receiver wishes to < | + | |
| - | | + | |
| - | any characters in its UART buffer immediately upon completing sending | + | |
| - | a block, to ensure no glitches were mis- interpreted. | + | |
| - | + | ||
| - | The most common technique is for " | + | |
| - | | + | |
| - | back to PURGE until a timeout occurs. | + | |
| - | | + | |
| - | + | ||
| - | + You may wish to add code recommended by John Mahr to your character | + | |
| - | | + | |
| - | | + | |
| - | most common of which is a hit in the high bits of the byte in two | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | __________ | + | |
| - | + | ||
| - | 1. These times should be adjusted for use with timesharing systems. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 7 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 8. XMODEM/CRC Overview | + | |
| - | + | ||
| - | Original 1/13/85 by John Byrns -- CRC option. | + | |
| - | + | ||
| - | Please pass on any reports of errors in this document or suggestions for | + | |
| - | improvement to me via Ward' | + | |
| - | 885-1105. | + | |
| - | + | ||
| - | The CRC used in the Modem Protocol is an alternate form of block check | + | |
| - | which provides more robust error detection than the original checksum. | + | |
| - | Andrew S. Tanenbaum says in his book, Computer Networks, that the CRC- | + | |
| - | CCITT used by the Modem Protocol will detect all single and double bit | + | |
| - | errors, all errors with an odd number of bits, all burst errors of length | + | |
| - | 16 or less, 99.997% of 17-bit error bursts, and 99.998% of 18-bit and | + | |
| - | longer bursts.[1] | + | |
| - | + | ||
| - | The changes to the Modem Protocol to replace the checksum with the CRC are | + | |
| - | straight forward. If that were all that we did we would not be able to | + | |
| - | communicate between a program using the old checksum protocol and one | + | |
| - | using the new CRC protocol. An initial handshake was added to solve this | + | |
| - | problem. The handshake allows a receiving program with CRC capability to | + | |
| - | determine whether the sending program supports the CRC option, and to | + | |
| - | switch it to CRC mode if it does. This handshake is designed so that it | + | |
| - | will work properly with programs which implement only the original | + | |
| - | protocol. A description of this handshake is presented in section 10. | + | |
| - | + | ||
| - | | + | |
| Each block of the transfer in CRC mode looks like: | Each block of the transfer in CRC mode looks like: | ||
| Line 1010: | Line 847: | ||
| <CRC lo> | <CRC lo> | ||
| - | 8.1 | + | ==== CRC Calculation |
| - | 8.1.1 | + | === Formal_Definition |
| - | To calculate the 16 bit CRC the message bits are considered to be the | + | To calculate the 16 bit CRC the message bits are considered to be the |
| - | coefficients of a polynomial. This message polynomial is first multiplied | + | coefficients of a polynomial. This message polynomial is first multiplied |
| - | by X^16 and then divided by the generator polynomial (X^16 + X^12 + X^5 + | + | by X^16 and then divided by the generator polynomial (X^16 + X^12 + X^5 + |
| + | 1) using modulo two arithmetic. The remainder left after the division is | ||
| + | the desired CRC. Since a message block in the Modem Protocol is 128 bytes | ||
| + | or 1024 bits, the message polynomial will be of order X^1023. The hi order | ||
| + | bit of the first byte of the message block is the coefficient of X^1023 in | ||
| + | the message polynomial. | ||
| + | block is the coefficient of X^0 in the message polynomial. | ||
| + | ===Figure 11: Example of CRC Calculation written in C === | ||
| - | __________ | + | The following XMODEM crc routine is taken from " |
| - | + | the source code for these programs (contained in RZSZ.ZOO) for usage. | |
| - | 1. This reliability figure is misleading because XMODEM' | + | fast table driven version is also included in this file. |
| - | supervisory functions are not protected by this CRC. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 8 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 1) using modulo two arithmetic. The remainder left after the division is | + | |
| - | the desired CRC. Since a message block in the Modem Protocol is 128 bytes | + | |
| - | or 1024 bits, the message polynomial will be of order X^1023. The hi order | + | |
| - | bit of the first byte of the message block is the coefficient of X^1023 in | + | |
| - | the message polynomial. | + | |
| - | block is the coefficient of X^0 in the message polynomial. | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | the source code for these programs (contained in RZSZ.ZOO) for usage. | + | |
| - | fast table driven version is also included in this file. | + | |
| + | < | ||
| /* update CRC */ | /* update CRC */ | ||
| unsigned short | unsigned short | ||
| Line 1072: | Line 888: | ||
| return crc; | return crc; | ||
| } | } | ||
| + | </ | ||
| + | ==== CRC File Level Protocol Changes ==== | ||
| - | 8.2 CRC File Level Protocol Changes | + | === Common_to_Both_Sender_and_Receiver |
| - | + | The only change to the File Level Protocol for the CRC option is the | |
| - | 8.2.1 | + | initial handshake which is used to determine if both the sending and the |
| - | The only change to the File Level Protocol for the CRC option is the | + | receiving programs support the CRC mode. All Modem Programs should support |
| - | initial handshake which is used to determine if both the sending and the | + | the checksum mode for compatibility with older versions. |
| - | receiving programs support the CRC mode. All Modem Programs should support | + | program that wishes to receive in CRC mode implements the mode setting |
| - | the checksum mode for compatibility with older versions. | + | handshake by sending a <C> in place of the initial < |
| - | program that wishes to receive in CRC mode implements the mode setting | + | program supports CRC mode it will recognize the <C> and will set itself |
| - | handshake by sending a <C> in place of the initial < | + | into CRC mode, and respond by sending the first block as if a <nak> had |
| - | program supports CRC mode it will recognize the <C> and will set itself | + | been received. If the sending program does not support CRC mode it will |
| - | into CRC mode, and respond by sending the first block as if a <nak> had | + | not respond to the <C> at all. After the receiver has sent the <C> it will |
| - | been received. If the sending program does not support CRC mode it will | + | wait up to 3 seconds for the <soh> that starts the first block. If it |
| - | not respond to the <C> at all. After the receiver has sent the <C> it will | + | receives a <soh> within 3 seconds it will assume the sender supports CRC |
| - | wait up to 3 seconds for the <soh> that starts the first block. If it | + | mode and will proceed with the file exchange in CRC mode. If no <soh> is |
| - | receives a <soh> within 3 seconds it will assume the sender supports CRC | + | received within 3 seconds the receiver will switch to checksum mode, send |
| - | mode and will proceed with the file exchange in CRC mode. If no <soh> is | + | a < |
| - | + | checksum mode it should send an initial <nak> and the sending program | |
| - | + | should respond to the <nak> as defined in the original Modem Protocol. | |
| - | + | After the mode has been set by the initial <C> or <nak> the protocol | |
| - | Chapter 8 | + | follows the original Modem Protocol and is identical whether the checksum |
| - | + | or CRC is being used. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | | + | |
| - | a < | + | |
| - | checksum mode it should send an initial <nak> and the sending program | + | |
| - | should respond to the <nak> as defined in the original Modem Protocol. | + | |
| - | After the mode has been set by the initial <C> or <nak> the protocol | + | |
| - | follows the original Modem Protocol and is identical whether the checksum | + | |
| - | or CRC is being used. | + | |
| - | + | ||
| - | + | ||
| - | 8.2.2 Receive_Program_Considerations | + | |
| - | There are at least 4 things that can go wrong with the mode setting | + | |
| - | handshake. | + | |
| - | + | ||
| - | 1. the initial <C> can be garbled or lost. | + | |
| - | + | ||
| - | 2. the initial <soh> can be garbled. | + | |
| - | + | ||
| - | 3. the initial <C> can be changed to a < | + | |
| - | + | ||
| - | 4. the initial <nak> from a receiver which wants to receive in checksum | + | |
| - | can be changed to a < | + | |
| - | + | ||
| - | The first problem can be solved if the receiver sends a second <C> after | + | |
| - | it times out the first time. This process can be repeated several times. | + | |
| - | It must not be repeated too many times before sending a <nak> and | + | |
| - | switching to checksum mode or a sending program without CRC support may | + | |
| - | time out and abort. Repeating the <C> will also fix the second problem if | + | |
| - | the sending program cooperates by responding as if a <nak> were received | + | |
| - | instead of ignoring the extra < | + | |
| - | + | ||
| - | It is possible to fix problems 3 and 4 but probably not worth the trouble | + | |
| - | since they will occur very infrequently. They could be fixed by switching | + | |
| - | modes in either the sending or the receiving program after a large number | + | |
| - | of successive < | + | |
| - | + | ||
| - | + | ||
| - | 8.2.3 Sending_Program_Considerations | + | |
| - | The sending program should start in the checksum mode. This will insure | + | |
| - | compatibility with checksum only receiving programs. Anytime a <C> is | + | |
| - | received before the first <nak> or <ack> the sending program should set | + | |
| - | itself into CRC mode and respond as if a <nak> were received. The sender | + | |
| - | should respond to additional <C>s as if they were < | + | |
| - | <ack> is received. This will assist the receiving program in determining | + | |
| - | the correct mode when the <soh> is lost or garbled. After the first < | + | |
| - | is received the sending program should ignore < | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 8 | + | |
| - | + | ||
| + | === Receive_Program_Considerations === | ||
| + | There are at least 4 things that can go wrong with the mode setting | ||
| + | handshake. | ||
| + | - the initial <C> can be garbled or lost. | ||
| + | - the initial <soh> can be garbled. | ||
| + | - the initial <C> can be changed to a < | ||
| + | - the initial <nak> from a receiver which wants to receive in checksum | ||
| + | The first problem can be solved if the receiver sends a second <C> after | ||
| + | it times out the first time. This process can be repeated several times. | ||
| + | It must not be repeated too many times before sending a <nak> and | ||
| + | switching to checksum mode or a sending program without CRC support may | ||
| + | time out and abort. Repeating the <C> will also fix the second problem if | ||
| + | the sending program cooperates by responding as if a <nak> were received | ||
| + | instead of ignoring the extra <C>. | ||
| - | X/YMODEM Protocol Reference | + | It is possible to fix problems 3 and 4 but probably not worth the trouble |
| + | since they will occur very infrequently. They could be fixed by switching | ||
| + | modes in either the sending or the receiving program after a large number | ||
| + | of successive < | ||
| + | === Sending_Program_Considerations === | ||
| + | The sending program should start in the checksum mode. This will insure | ||
| + | compatibility with checksum only receiving programs. Anytime a <C> is | ||
| + | received before the first <nak> or <ack> the sending program should set | ||
| + | itself into CRC mode and respond as if a <nak> were received. The sender | ||
| + | should respond to additional <C>s as if they were < | ||
| + | <ack> is received. This will assist the receiving program in determining | ||
| + | the correct mode when the <soh> is lost or garbled. After the first <ack> | ||
| + | is received the sending program should ignore <C>s. | ||
| - | 8.3 Data Flow Examples with CRC Option | ||
| - | | + | ==== Data Flow Examples with CRC Option ==== |
| - | transmission in the CRC mode but the sender does not support the CRC | + | Here is a data flow example for the case where the receiver requests |
| - | option. This example also includes various transmission errors. | + | transmission in the CRC mode but the sender does not support the CRC |
| - | represents the checksum byte. | + | option. This example also includes various transmission errors. |
| + | represents the checksum byte. | ||
| - | | + | === Figure 12: Data Flow: Receiver has CRC Option, Sender Doesn' |
| SENDER | SENDER | ||
| Line 1204: | Line 981: | ||
| < | < | ||
| - | | + | Here is a data flow example for the case where the receiver requests |
| - | transmission in the CRC mode and the sender supports the CRC option. | + | transmission in the CRC mode and the sender supports the CRC option. |
| - | example also includes various transmission errors. | + | example also includes various transmission errors. |
| - | 2 CRC bytes. | + | 2 CRC bytes. |
| - | + | === Figure 13: Receiver and Sender Both have CRC Option | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 8 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Figure 13. | + | |
| SENDER | SENDER | ||
| Line 1256: | Line 1006: | ||
| + | ===== More Information ===== | ||
| + | Please contact Omen Technology for troff source files and typeset copies | ||
| + | of this document. | ||
| + | ==== TeleGodzilla Bulletin Board ==== | ||
| + | More information may be obtained by calling TeleGodzilla at 503-621-3746. | ||
| + | Speed detection is automatic for 1200, 2400 and 19200(Telebit PEP) bps. | ||
| + | TrailBlazer modem users may issue the TeleGodzilla trailblazer command to | ||
| + | swith to 19200 bps once they have logged in. | ||
| + | Interesting files include RZSZ.ZOO (C source code), YZMODEM.ZOO (Official | ||
| + | XMODEM, YMODEM, and ZMODEM protocol descriptions), | ||
| + | ZCOMMDOC.ARC, | ||
| + | True YMODEM(TM), ZMODEM, Kermit Sliding Windows, Telink, MODEM7 Batch, | ||
| + | script language, etc.). | ||
| + | ==== Unix UUCP Access ==== | ||
| + | UUCP sites can obtain the current version of this file with | ||
| + | uucp omen!/ | ||
| + | A continually updated list of available files is stored in | ||
| + | / | ||
| + | When retrieving these files with uucp, | ||
| + | remember that the destination directory on your system must be writeable | ||
| + | by anyone, or the UUCP transfer will fail. | ||
| + | The following L.sys line calls TeleGodzilla (Pro-YAM in host operation). | ||
| + | TeleGodzilla determines the incoming speed automatically. | ||
| + | In response to "Name Please:" | ||
| + | user name. The password (Giznoid) controls access to the Xenix system | ||
| + | connected to the IBM PC's other serial port. Communications between | ||
| + | Pro-YAM and Xenix use 9600 bps; YAM converts this to the caller' | ||
| - | + | Finally, the calling uucico logs in as uucp. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 8 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 9. MORE INFORMATION | + | |
| - | + | ||
| - | Please contact Omen Technology for troff source files and typeset copies | + | |
| - | of this document. | + | |
| - | + | ||
| - | + | ||
| - | 9.1 TeleGodzilla Bulletin Board | + | |
| - | + | ||
| - | More information may be obtained by calling TeleGodzilla at 503-621-3746. | + | |
| - | Speed detection is automatic for 1200, 2400 and 19200(Telebit PEP) bps. | + | |
| - | TrailBlazer modem users may issue the TeleGodzilla trailblazer command to | + | |
| - | swith to 19200 bps once they have logged in. | + | |
| - | + | ||
| - | Interesting files include RZSZ.ZOO (C source code), YZMODEM.ZOO (Official | + | |
| - | XMODEM, YMODEM, and ZMODEM protocol descriptions), | + | |
| - | ZCOMMDOC.ARC, | + | |
| - | True YMODEM(TM), ZMODEM, Kermit Sliding Windows, Telink, MODEM7 Batch, | + | |
| - | script language, etc.). | + | |
| - | + | ||
| - | + | ||
| - | 9.2 Unix UUCP Access | + | |
| - | + | ||
| - | UUCP sites can obtain the current version of this file with | + | |
| - | uucp omen!/ | + | |
| - | A continually updated list of available files is stored in | + | |
| - | / | + | |
| - | remember that the destination directory on your system must be writeable | + | |
| - | by anyone, or the UUCP transfer will fail. | + | |
| - | + | ||
| - | The following L.sys line calls TeleGodzilla (Pro-YAM in host operation). | + | |
| - | TeleGodzilla determines the incoming speed automatically. | + | |
| - | + | ||
| - | In response to "Name Please:" | + | |
| - | user name. The password (Giznoid) controls access to the Xenix system | + | |
| - | connected to the IBM PC's other serial port. Communications between | + | |
| - | Pro-YAM and Xenix use 9600 bps; YAM converts this to the caller' | + | |
| - | + | ||
| - | | + | |
| omen Any ACU 2400 1-503-621-3746 se:--se: link ord: Giznoid in:--in: uucp | omen Any ACU 2400 1-503-621-3746 se:--se: link ord: Giznoid in:--in: uucp | ||
| - | 10. REVISIONS | + | ===== Revisions ===== |
| - | | + | === 10-27-87 |
| - | | + | Optional fields added for number of files remaining to be sent and total number of bytes remaining to be sent. |
| - | 10-18-87 Flow control discussion added to 1024 byte block descritpion, | + | === 10-18-87 |
| - | | + | Flow control discussion added to 1024 byte block descritpion, |
| - | 8-03-87 Revised for clarity. | + | === 8-03-87 |
| - | 5-31-1987 emphasizes minimum requirements for YMODEM, and updates | + | Revised for clarity. |
| + | === 5-31-1987 | ||
| + | emphasizes minimum requirements for YMODEM, and updates | ||
| + | === 9-11-1986 === | ||
| + | clarifies nomenclature and some minor points. | ||
| + | === 4-15-1986 === | ||
| + | clarifies some points concerning CRC calculations and spaces in the header. | ||
| + | ===== YMODEM Programs ===== | ||
| - | Chapter 10 Xmodem Protocol Overview | ||
| + | ZCOMM, A shareware little brother to Professional-YAM, | ||
| + | ZCOMMEXE.ARC on TeleGodzilla and other bulletin board systems. | ||
| + | be used to test YMODEM amd ZMODEM implementations. | ||
| + | Unix programs supporting YMODEM are available on TeleGodzilla in RZSZ.ZOO. | ||
| + | This ZOO archive includes a ZCOMM/ | ||
| + | a bootstrap program MINIRB.C, compile it, and then upload the rest of the | ||
| + | files using the compiled MINIRB. | ||
| + | including V7, Xenix, Sys III, 4.2 BSD, SYS V, Idris, Coherent, and | ||
| + | Regulus. | ||
| + | A version for VAX-VMS is available in VRBSB.SHQ. | ||
| + | Irv Hoff has added 1k blocks and basic YMODEM batch transfers to the KMD | ||
| + | and IMP series programs, which replace the XMODEM and MODEM7/ | ||
| + | respectively. | ||
| - | + | Questions about Professional-YAM communications software may be directed to: | |
| - | + | ||
| - | X/YMODEM Protocol Reference | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | information on accessing files. | + | |
| - | 9-11-1986 clarifies nomenclature and some minor points. | + | |
| - | The April 15 1986 edition clarifies some points concerning CRC | + | |
| - | calculations and spaces in the header. | + | |
| - | + | ||
| - | + | ||
| - | 11. YMODEM Programs | + | |
| - | + | ||
| - | ZCOMM, A shareware little brother to Professional-YAM, | + | |
| - | ZCOMMEXE.ARC on TeleGodzilla and other bulletin board systems. | + | |
| - | be used to test YMODEM amd ZMODEM implementations. | + | |
| - | + | ||
| - | Unix programs supporting YMODEM are available on TeleGodzilla in RZSZ.ZOO. | + | |
| - | This ZOO archive includes a ZCOMM/ | + | |
| - | a bootstrap program MINIRB.C, compile it, and then upload the rest of the | + | |
| - | files using the compiled MINIRB. | + | |
| - | including V7, Xenix, Sys III, 4.2 BSD, SYS V, Idris, Coherent, and | + | |
| - | Regulus. | + | |
| - | + | ||
| - | A version for VAX-VMS is available in VRBSB.SHQ. | + | |
| - | + | ||
| - | Irv Hoff has added 1k blocks and basic YMODEM batch transfers to the KMD | + | |
| - | and IMP series programs, which replace the XMODEM and MODEM7/ | + | |
| - | respectively. | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| Chuck Forsberg | Chuck Forsberg | ||
| Omen Technology Inc | Omen Technology Inc | ||
| Line 1405: | Line 1095: | ||
| | | ||
| - | | + | Unlike ZMODEM and Kermit, XMODEM and YMODEM place obstacles in the path of |
| - | a reliable high performance implementation, | + | a reliable high performance implementation, |
| - | under stress of the industry leaders' | + | under stress of the industry leaders' |
| - | Technology provides consulting and other services to those wishing to | + | Technology provides consulting and other services to those wishing to |
| - | implement XMODEM, YMODEM, and ZMODEM with state of the art features and | + | implement XMODEM, YMODEM, and ZMODEM with state of the art features and |
| - | reliability. | + | reliability. |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Chapter 11 Xmodem Protocol Overview | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | 10. REVISIONS........................................................ | + | |
| - | + | ||
| - | 11. YMODEM Programs.................................................. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | - i - | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | LIST OF FIGURES | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | Figure 10. Message Block Level Protocol, CRC mode.................... | + | |
| - | + | ||
| - | Figure 11. Example of CRC Calculation written in C................... | + | |
| - | + | ||
| - | Figure 12. Data Flow: Receiver has CRC Option, Sender Doesn' | + | |
| - | + | ||
| - | Figure 13. Receiver and Sender Both have CRC Option.................. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | - ii - | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| ===== See Also ===== | ===== See Also ===== | ||
| Line 1565: | Line 1106: | ||
| {{tag> | {{tag> | ||
| + | |||
| + | |||