Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ref:ymodem [2011/07/13 21:46]
digitalman
ref:ymodem [2011/07/13 22:02] (current)
digitalman
Line 6: Line 6:
  
 This document was formatted for Wiki syntax by [[person:​digital man|Rob Swindell]] on July-13-2011. This document was formatted for Wiki syntax by [[person:​digital man|Rob Swindell]] on July-13-2011.
- 
- 
-Please distribute as widely as possible. 
-Questions to [[http://​omen.com|Chuck Forsberg]]. 
- 
- 
- 
- 
- 
-                               Omen Technology Inc 
-                          The High Reliability Software 
-                            17505-V Sauvie Island Road 
-                              Portland Oregon 97231 
-                            VOICE: 503-621-3406 :VOICE 
-    Modem (TeleGodzilla):​ 503-621-3746 Speed 19200(Telebit PEP),​2400,​1200,​300 
-                              CompuServe: 70007,2304 
-                                    GEnie: CAF 
-                        UUCP: ...!tektronix!reed!omen!caf 
- 
  
 ===== Tower of Babel ===== ===== Tower of Babel =====
Line 378: Line 359:
 === Figure 1: XMODEM-1k Blocks === === Figure 1: XMODEM-1k Blocks ===
  
-              ​SENDER ​                                 RECEIVER +      ​SENDER ​                                 RECEIVER 
-                                                      "s -k foo.bar"​ +                                              "s -k foo.bar"​ 
-              "​foo.bar open x.x minutes"​ +      "​foo.bar open x.x minutes"​ 
-                                                      +                                              
-              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 3: Mixed 1024 and 128 byte Blocks === === Figure 3: Mixed 1024 and 128 byte Blocks ===
  
-              ​SENDER ​                                 RECEIVER +      ​SENDER ​                                 RECEIVER 
-                                                      "s -k foo.bar"​ +                                              "s -k foo.bar"​ 
-              "​foo.bar open x.x minutes"​ +      "​foo.bar open x.x minutes"​ 
-                                                      +                                              
-              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 436: Line 417:
 To maintain upwards compatibility,​ all unused bytes in block 0 must be set to null. To maintain upwards compatibility,​ all unused bytes in block 0 must be set to null.
  
-==== Pathname ​====+=== Pathname ===
 The pathname (conventionally,​ the file name) is sent as a null The pathname (conventionally,​ the file name) is sent as a null
 terminated ASCII string. ​ This is the filename format used by the terminated ASCII string. ​ This is the filename format used by the
 handle oriented MSDOS(TM) functions and C library fopen functions. handle oriented MSDOS(TM) functions and C library fopen functions.
 An assembly language example follows: An assembly language example follows:
-                                  ​DB      '​foo.bar',​0+    ​DB      '​foo.bar',​0
 No spaces are included in the pathname. ​ Normally only the file name No spaces are included in the pathname. ​ Normally only the file name
 stem (no directory prefix) is transmitted unless the sender has stem (no directory prefix) is transmitted unless the sender has
Line 447: Line 428:
 (A:, B:, etc.) is not sent. (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. ​ This is a convenience for       users of systems (such as Unix) which store filenames in upper and lower case.   * File names are forced to lower case unless the sending system supports upper/lower case file names. ​ This is a convenience for       users of systems (such as Unix) which store filenames in upper and lower case.
Line 456: Line 437:
   *  If directories are included, they are delimited by /; i.e., "​subdir/​foo"​ is acceptable, "​subdir\foo"​ is not.   *  If directories are included, they are delimited by /; i.e., "​subdir/​foo"​ is acceptable, "​subdir\foo"​ is not.
  
-==== 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 470: 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 487: 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 498: 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 506: 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 539: Line 520:
 === Figure 3: YMODEM Batch Transmission Session === === Figure 3: YMODEM Batch Transmission Session ===
  
-              ​SENDER ​                                 RECEIVER +      ​SENDER ​                                 RECEIVER 
-                                                      "sb foo.*<​CR>"​ +                                              "sb foo.*<​CR>"​ 
-              "​sending in batch mode etc."​ +      "​sending in batch mode etc."​ 
-                                                      C (command:​rb) +                                              C (command:​rb) 
-              SOH 00 FF foo.c NUL[123] CRC CRC +      SOH 00 FF foo.c NUL[123] CRC CRC 
-                                                      ACK +                                              ACK 
-                                                      +                                              
-              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 
-                                                      +                                              
-              SOH 00 FF NUL[128] CRC CRC +      SOH 00 FF NUL[128] CRC CRC 
-                                                      ACK+                                              ACK
  
 === Figure 4: YMODEM Batch Transmission Session-1k Blocks === === Figure 4: YMODEM Batch Transmission Session-1k Blocks ===
  
-            ​SENDER ​                                 RECEIVER +      ​SENDER ​                                 RECEIVER 
-                                                    "sb -k foo.*<​CR>"​ +                                              "sb -k foo.*<​CR>"​ 
-            "​sending in batch mode etc."​ +      "​sending in batch mode etc."​ 
-                                                    C (command:​rb) +                                              C (command:​rb) 
-            SOH 00 FF foo.c NUL[123] CRC CRC +      SOH 00 FF foo.c NUL[123] 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 
-                                                    NAK +                                              NAK 
-            EOT +      EOT 
-                                                    ACK +                                              ACK 
-                                                    +                                              
-            SOH 00 FF NUL[128] CRC CRC +      SOH 00 FF NUL[128] CRC CRC 
-                                                    ACK+                                              ACK
  
  
Line 587: Line 568:
 === Figure 5: YMODEM Filename block transmitted by sz === === Figure 5: YMODEM Filename block transmitted by sz ===
 <​code>​ <​code>​
-           -rw-r--r-- ​ 6347 Jun 17 1984 20:34 bbcsched.txt+      ​-rw-r--r-- ​ 6347 Jun 17 1984 20:34 bbcsched.txt
  
-           00 0100FF62 62637363 6865642E 74787400 ​  ​|...bbcsched.txt.| +      ​00 0100FF62 62637363 6865642E 74787400 ​  ​|...bbcsched.txt.| 
-           ​10 36333437 20333331 34373432 35313320 ​  |6347 3314742513 | +      10 36333437 20333331 34373432 35313320 ​  |6347 3314742513 | 
-           ​20 31303036 34340000 00000000 00000000 ​  ​|100644..........| +      20 31303036 34340000 00000000 00000000 ​  ​|100644..........| 
-           ​30 00000000 00000000 00000000 00000000 +      30 00000000 00000000 00000000 00000000 
-           ​40 00000000 00000000 00000000 00000000 +      40 00000000 00000000 00000000 00000000 
-           ​50 00000000 00000000 00000000 00000000 +      50 00000000 00000000 00000000 00000000 
-           ​60 00000000 00000000 00000000 00000000 +      60 00000000 00000000 00000000 00000000 
-           ​70 00000000 00000000 00000000 00000000 +      70 00000000 00000000 00000000 00000000 
-           ​80 000000CA 56+      80 000000CA 56
 </​code>​ </​code>​
 === Figure 6: YMODEM Header Information and Features ==== === Figure 6: YMODEM Header Information and Features ====
Line 660: Line 641:
 === Figure 7: YMODEM-g Transmission Session ==== === Figure 7: YMODEM-g Transmission Session ====
  
-            ​SENDER ​                                 RECEIVER +      ​SENDER ​                                 RECEIVER 
-                                                    "sb foo.*<​CR>"​ +                                              "sb foo.*<​CR>"​ 
-            "​sending in batch mode etc..."​ +      "​sending in batch mode etc..."​ 
-                                                    G (command:rb -g) +                                              G (command:rb -g) 
-            SOH 00 FF foo.c NUL[123] CRC CRC +      SOH 00 FF foo.c NUL[123] CRC CRC 
-                                                    +                                              
-            SOH 01 FE Data[128] CRC CRC +      SOH 01 FE Data[128] CRC CRC 
-            STX 02 FD Data[1024] CRC CRC +      STX 02 FD Data[1024] CRC CRC 
-            SOH 03 FC Data[128] CRC CRC +      SOH 03 FC Data[128] CRC CRC 
-            SOH 04 FB Data[100] CPMEOF[28] CRC CRC +      SOH 04 FB Data[100] CPMEOF[28] CRC CRC 
-            EOT +      EOT 
-                                                    ACK +                                              ACK 
-                                                    +                                              
-            SOH 00 FF NUL[128] CRC CRC+      SOH 00 FF NUL[128] CRC CRC
  
  
Line 881: Line 862:
 ===Figure 11: Example of CRC Calculation written in C === ===Figure 11: Example of CRC Calculation written in C ===
  
-    ​The following XMODEM crc routine is taken from "​rbsb.c"​. ​ Please refer to +The following XMODEM crc routine is taken from "​rbsb.c"​. ​ Please refer to 
-    the source code for these programs (contained in RZSZ.ZOO) for usage. ​ A +the source code for these programs (contained in RZSZ.ZOO) for usage. ​ A 
-    fast table driven version is also included in this file.+fast table driven version is also included in this file. 
 <​code>​ <​code>​
     /* update CRC */     /* update CRC */
Line 1066: Line 1048:
  
  
-==== 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-27-87 ​=== 
-  ​* ​10-18-87 Flow control discussion added to 1024 byte block descritpion,​ minor revisions for clarity per user comments. +Optional fields added for number of files remaining to be sent and total number of bytes remaining to be sent. 
-  ​* ​8-03-87 Revised for clarity. +=== 10-18-87 ​=== 
-  ​* ​5-31-1987 emphasizes minimum requirements for YMODEM, and updates information on accessing files. +Flow control discussion added to 1024 byte block descritpion,​ minor revisions for clarity per user comments. 
-  ​* ​9-11-1986 clarifies nomenclature and some minor points. +=== 8-03-87 ​=== 
-  * The April 15 1986 edition ​clarifies some points concerning CRC +Revised for clarity. 
-    ​calculations and spaces in the header.+=== 5-31-1987 ​=== 
 +emphasizes minimum requirements for YMODEM, and updates information on accessing files. 
 +=== 9-11-1986 ​=== 
 +clarifies nomenclature and some minor points. 
 +=== 4-15-1986 === 
 +clarifies some points concerning CRC calculations and spaces in the header.
  
  

In Other Languages