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> | ||
+ | |||
+ | |||