Skip to content
Snippets Groups Projects
Commit 4ce1ef0f authored by rswindell's avatar rswindell
Browse files

Document new options and behavior of SEXYZ.

Update credits.
parent 8cd5e8f2
No related branches found
No related tags found
No related merge requests found
Synchronet External X/Y/Zmodem (SEXYZ) File Transfer Protocol Driver
Synchronet External X/Y/ZMODEM (SEXYZ) File Transfer Protocol Driver
--------------------------------------------------------------------
$Id$
......@@ -7,8 +7,8 @@ Overview
--------
SEXYZ was developed as a native (32-bit) TCP/socket-based replacement for the
16-bit DOS file transfer drivers (e.g. FDSZ, CE-XYZ, etc.) that we've been
stuck with on Win32 BBSes for FAR too long. While SEXYZ was designed with
Synchronet BBSes in mind, it should also work with other Win32* BBS packages
stuck with on 32-bit BBSes for FAR too long. While SEXYZ was designed with
Synchronet BBSes in mind, it should also work with other 32-bit BBS packages
that have the ability to pass socket descriptors to external file transfer
protocol drivers.
......@@ -24,15 +24,12 @@ SEXYZ has several advantages over legacy drivers like FDSZ and CE-XYZ:
o Socket-based (no need for FOSSIL drivers or virtual COM ports/UARTs)
o Multi-tasking friendly (does not needlessly consume CPU cycles)
o Supports long filenames (e.g. not just DOS "8.3" formatted names)
o Supports Ymodem-G (FDSZ does not)
o Handles Telnet IAC escaping and option negotiations
o Supports YMODEM-G and XMODEM-G (FDSZ does not)
o Handles Telnet IAC escaping and option negotiations (optionally)
o Transfers files over fast connections (e.g. 100KB/sec) without issue
o Actively developed and supported
o Open source (at cvs.synchro.net)!
* SEXYZ can also be built for use (natively) on Linux and other Unix variants
(e.g. FreeBSD).
Distribution
------------
......@@ -53,9 +50,12 @@ ftp://ftp.synchro.net
ftp://vert.synchro.net
telnet://vert.synchro.net
SEXYZ can also be built from the C source code for use (natively) on Linux
and other Unix variants (e.g. FreeBSD).
For a client implementation of SEXYZ, use the SyncTerm Telnet/RLogin/SSH
terminal program (http://syncterm.bbsdev.net/), available for many platforms,
including Win32 and *nix.
terminal program (http://syncterm.net/), available for many platforms,
including Win32, *nix, and Mac OS-X.
Command-line Syntax
......@@ -67,22 +67,25 @@ usage: sexyz <socket> [-opts] <cmd> [file | path | @list]
socket = TCP socket descriptor (or leave blank for "stdio" mode on Unix)
opts = -y to overwrite files when receiving
-o disable Zmodem CRC-32 mode (use CRC-16)
-s disable Zmodem streaming (Slow Zmodem)
-2 set maximum Zmodem block size to 2K
-4 set maximum Zmodem block size to 4K
-8 set maximum Zmodem block size to 8K (ZedZap)
opts = -y allow overwriting of existing files when receiving
-o disable ZMODEM CRC-32 mode (force CRC-16 mode instead)
-s disable ZMODEM streaming (Slow ZMODEM)
-k enable X/YMODEM-1K send mode
-c enable XMODEM-CRC receive mode
-g enable X/YMODEM-G receive mode (no error recovery)
-2 set maximum ZMODEM block size to 2K
-4 set maximum ZMODEM block size to 4K
-8 set maximum ZMODEM block size to 8K (ZedZap)
-! to pause after abnormal exit (error)
-telnet to enable Telnet mode (the default)
-rlogin to enable RLogin (pass-through) mode
cmd = v to display detailed version information
sx to send Xmodem rx to recv Xmodem
sX to send Xmodem-1K rc to recv Xmodem-CRC
sy to send Ymodem ry to recv Ymodem
sY to send Ymodem-1K rg to recv Ymodem-G
sz to send Zmodem rz to recv Zmodem
sx to send XMODEM rx to receive XMODEM
sX to send XMODEM-1K rc to receive XMODEM-CRC
sy to send YMODEM ry to receive YMODEM
sY to send YMODEM-1K rg to receive YMODEM-G
sz to send ZMODEM rz to receive ZMODEM
file = filename to send or receive
path = directory to receive files into
......@@ -93,11 +96,13 @@ NOTE: SEXYZ actually supports either "+list" or "@list" syntax for specifying
a file list on the command-line. If the list file doesn't exist, it'll
treat the '+' or '@' as part of the filename to send or receive.
NOTE: SEXYZ also supports "rz/sz" command-line syntax for some commands.
Examples: "sexyz -c rx" to recv Xmodem-CRC
"sexyz -k sx" to send Xmodem-1K
"sexyz rb" to recv Ymodem
"sexyz -k sb" to send Ymodem-1K
NOTE: SEXYZ also supports "rz/sz style" command-line syntax for some commands.
Examples: "sexyz -c rx" to recv XMODEM-CRC (same as "sexyz rc")
"sexyz -k sx" to send XMODEM-1K (same as "seyxz sX")
"sexyz rb" to recv YMODEM (same as "sexyz ry")
"sexyz -k sb" to send YMODEM-1K (same as "sexyz sY")
"sexyz -g ry" to recv YMODEM-G (same as "sexyz rg")
"sexyz -g rx" to recv XMODEM-G
Installation for Synchronet v3.12-Win32
......@@ -112,7 +117,7 @@ SCFG:File Options->Transfer Protocols:
[File Transfer Protocol]
1: Mnemonic (Command Key) X
2: Protocol Name Xmodem (SEXYZ)
2: Protocol Name XMODEM (SEXYZ)
3: Access Requirements
4: Upload Command Line %!sexyz%. %h -%p rC %f
5: Download Command Line %!sexyz%. %h -%p sX %f
......@@ -125,7 +130,7 @@ SCFG:File Options->Transfer Protocols:
[File Transfer Protocol]
1: Mnemonic (Command Key) Y
2: Protocol Name Ymodem (SEXYZ)
2: Protocol Name YMODEM (SEXYZ)
3: Access Requirements
4: Upload Command Line %!sexyz%. %h -%p ry %f
5: Download Command Line %!sexyz%. %h -%p sY %f
......@@ -138,7 +143,7 @@ SCFG:File Options->Transfer Protocols:
[File Transfer Protocol]
1: Mnemonic (Command Key) G
2: Protocol Name Ymodem-G (SEXYZ)
2: Protocol Name YMODEM-G (SEXYZ)
3: Access Requirements
4: Upload Command Line %!sexyz%. %h -%p rg %f
5: Download Command Line %!sexyz%. %h -%p sY %f
......@@ -151,7 +156,7 @@ SCFG:File Options->Transfer Protocols:
[File Transfer Protocol]
1: Mnemonic (Command Key) Z
2: Protocol Name Zmodem (SEXYZ)
2: Protocol Name ZMODEM (SEXYZ)
3: Access Requirements
4: Upload Command Line %!sexyz%. %h -%p rz %f
5: Download Command Line %!sexyz%. %h -%p sz %f
......@@ -166,7 +171,7 @@ Optional/Advanced:
[File Transfer Protocol]
1: Mnemonic (Command Key) 8
2: Protocol Name Zmodem-8K (SEXYZ)
2: Protocol Name ZMODEM-8K (SEXYZ)
3: Access Requirements
4: Upload Command Line %!sexyz%. %h -%p rz %f
5: Download Command Line %!sexyz%. %h -%p -8 sz %f
......@@ -177,8 +182,8 @@ Optional/Advanced:
10: Supports DSZLOG Yes
11: Socket I/O Yes
NOTE: It is suggested you remove existing FDSZ or CE-XYZ transfer protocol
entries as they are no longer needed.
NOTE: It is suggested you remove existing FDSZ, CE-XYZ, or sz/rz transfer
protocol entries as they are no longer needed.
Example configuration for Mystic v1.08-Win32
......@@ -187,14 +192,14 @@ Example configuration for Mystic v1.08-Win32
A. Active : Yes
B. HotKey : Z
C. Description: Zmodem
C. Description: ZMODEM
D. Batch : No
E. Send Cmd : c:\mystic\prots\sexyz.exe %0 sz %3
F. Receive Cmd: c:\mystic\prots\sexyz.exe %0 rz %3
A. Active : Yes
B. HotKey : Z
C. Description: Zmodem batch
C. Description: ZMODEM batch
D. Batch : Yes
E. Send Cmd : c:\mystic\prots\sexyz.exe %0 sz @%3
F. Receive Cmd: c:\mystic\prots\sexyz.exe %0 rz %3
......@@ -204,7 +209,7 @@ Example configuration for EleBBS-Win32
--------------------------------------
(provided by Mike Ehlert, aka pcm)
Name Zmodem (SEXYZ)
Name ZMODEM (SEXYZ)
Key Z
Ext ctl file No
Batch Yes
......@@ -222,7 +227,7 @@ Log desc word 0
You will need to have the environment variable DSZLOG set to DSZ.LOG.
It should *not* have a path of course, so that it's created in the current
nodes directory.
node's directory.
Once you define that under control panel > system > env variables > system
variables, be sure to close the window running eleserv or telsrv and reopen
......@@ -240,9 +245,9 @@ Synchronet for Unix (prior to v3.14) did not support socket-based file
transfer protocols, so SEXYZ is only currently supported on Synchronet for
Unix (v3.13 and older) in "stdio" mode.
You can enable "stdio" mode in SEXYZ by removing '%h' (the socket descriptor)
You can use "stdio" mode in SEXYZ by removing '%h' (the socket descriptor)
from the above command-lines. If you're using Synchronet for Unix v3.14 or
later, socket I/O mode is preferred (do not enable "stdio" mode).
later, socket I/O mode is preferred (do not use "stdio" mode).
Optional Initialization File (sexyz.ini)
......@@ -274,23 +279,29 @@ Example .ini file (with default values given):
OutbufDrainTimeout=10 ; milliseconds before auto-flush
ProgressInterval=1 ; interval (in seconds) of progress display
[Xmodem]
SendTimeout=10 ; seconds
RecvTimeout=10 ; seconds
ByteTimeout=3 ; seconds
AckTimeout=10 ; seconds
BlockSize=1024 ; 128 or 1024
MaxErrors=10
G_Delay=1 ; millisecond yield between sent Ymodem-G blocks
[Zmodem]
[XMODEM]
SendTimeout=10 ; seconds
RecvTimeout=10 ; seconds
ByteTimeout=3 ; seconds
AckTimeout=10 ; seconds
BlockSize=1024 ; 128 or 1024
MaxBlockSize=1024 ; 128 or 1024
MaxErrors=9
G_Delay=1 ; millisecond yield between sent X/YMODEM-G blocks
SendG=TRUE ; Support G-mode for X/YMODEM sends
SendCRC=TRUE ; Support CRC-16 error detection for X/YMODEM sends
[YMODEM]
FallbackToXMODEM=0 ; Failed send attempts before falling back to XMODEM
[ZMODEM]
InitTimeout=10 ; seconds
SendTimeout=15 ; seconds
RecvTimeout=20 ; seconds
CrcTimeout=60 ; seconds
BlockSize=1024 ; 1024 is usually best to start with
MaxBlockSize=1024 ; 1024 is "true" Zmodem, 8192 for Zmodem-8K (ZedZap)
MaxErrors=10 ; maximum number of consecutive errors
MaxBlockSize=1024 ; 1024 is "true" ZMODEM, 8192 for ZMODEM-8K (ZedZap)
MaxErrors=9 ; maximum number of consecutive errors
RecvBufSize=0 ; specify non-zero for partial streaming receives
Streaming=TRUE ; set to FALSE to disable streaming (block-at-a-time)
CRC32=TRUE ; set to FALSE to force CRC-16 instead
......@@ -306,31 +317,41 @@ Example .ini file (with default values given):
Compatibility
-------------
The Xmodem, Ymodem, and Zmodem file transfers should be compatible with any
The XMODEM, YMODEM, and ZMODEM file transfers should be compatible with any
terminal programs or remote protocol drivers that conform to the public
specifications for these protocols written by Chuck Forsberg (Xmodem was
actually written by Ward Christensen, but was extended and documented by our
good friend, Chuck).
specifications for these protocols written by Chuck Forsberg (XMODEM was
actually written by Ward Christensen, but was extended by others and
documented by our good friend, Chuck).
SEXYZ supports the following protocols and their popular permutations:
Xmodem: 128 byte blocks, 8-bit checksum error detection
Xmodem-CRC: 128 byte blocks, 16-bit CRC error detection
Xmodem-1K: 1024 byte blocks, 16-bit CRC error detection
Ymodem: 128 byte blocks, 16-bit CRC error detection, batch file transfers
Ymodem-1K: 1024 byte blocks, 16-bit CRC error detection, batch file transfers
Ymodem-G: 1024 byte blocks, 16-bit CRC error detection, batch file transfers
and streaming (no acknowledgements)
Zmodem: 1024 byte blocks, 16-bit or 32-bit CRC error detection, batch file
XMODEM: 128-byte blocks, 8-bit checksum error detection
XMODEM-CRC: 128-byte blocks, 16-bit CRC error detection
XMODEM-1K: 1024-byte blocks, 16-bit CRC error detection
XMODEM-G: 1024-byte blocks, 16-bit CRC error detection, and streaming
(no acknowledgements or error recovery) (a.k.a. QMODEM-G)
YMODEM: 128-byte blocks, 16-bit CRC error detection, batch file transfers
YMODEM-1K: 1024-byte blocks, 16-bit CRC error detection, batch file transfers
YMODEM-G: 1024-byte blocks, 16-bit CRC error detection, batch file transfers
and streaming (no acknowledgements or error recovery)
ZMODEM: 1024-byte blocks, 16-bit or 32-bit CRC error detection, batch file
transfers, resume, auto-download, and more
Zmodem-8K: 8192 byte blocks, 16-bit or 32-bit CRC error detection, batch file
ZMODEM-8K: 8192-byte blocks, 16-bit or 32-bit CRC error detection, batch file
transfers, resume, auto-download, and more (a.k.a. ZedZap)
As of this writing, the current version of SEXYZ and the X/Zmodem modules are:
SEXYZ will automatically fall back from 1024-byte block XMODEM/YMODEM send
mode to 128-byte block XMODEM/YMODEM send mode if the receiver does not appear
to support 1024-byte blocks.
sexyz.c 1.77
xmodem.c 1.26 <-- Includes Ymodem
zmodem.c 1.71
SEXYZ also supports automatically falling back from XMODEM/YMODEM-CRC to
XMODEM/YMODEM-Checksum mode when sending to a receiver that does not support
CRC-16 error detection.
As of this writing, the current version of SEXYZ and the X/ZMODEM modules are:
sexyz.c 1.81
xmodem.c 1.36 <-- Includes YMODEM
zmodem.c 1.77
SEXYZ for Win32 has been tested successfully with the following Telnet clients
/terminal programs:
......@@ -339,7 +360,7 @@ SEXYZ for Win32 has been tested successfully with the following Telnet clients
OS: Linux
Version: 1.2.2
URL: ftp://ibiblio.org/pub/Linux/system/network/telnet/
Tested: Zmodem uploads and downloads
Tested: ZMODEM uploads and downloads
Failed: none
[HyperTerminal Private Edition]
......@@ -347,9 +368,9 @@ By: Hilgraeve, Inc.
OS: Win32
Version: 6.3
URL: http://www.hilgraeve.com/htpe/
Tested: Xmodem (checksum and CRC), Xmodem-1K, Ymodem-1K, Ymodem-G and Zmodem
Tested: XMODEM (checksum and CRC), XMODEM-1K, YMODEM-1K, YMODEM-G and ZMODEM
both uploads and downloads
Failed: Zmodem uploads (CRC errors detected): appears to be the fault of
Failed: ZMODEM uploads (CRC errors detected): appears to be the fault of
HyperTerminal and can be reproduced with any protocol driver on the
BBS/server side (even FDSZ)
......@@ -358,7 +379,7 @@ By: enigma
OS: Win32
Version: 1.0 (beta 12)/w32
URL: http://ozone.eesc.com
Tested: Zmodem uploads and downloads
Tested: ZMODEM uploads and downloads
Failed: none
[NetRunner]
......@@ -366,8 +387,8 @@ By: Mystic Software Development (James Coyle/g00r00)
OS: Win32
Version: 0.09
URL: www.mysticbbs.com
Tested: Zmodem uploads and downloads
Failed: Zmodem uploads (CRC errors detected): appears to be the fault of
Tested: ZMODEM uploads and downloads
Failed: ZMODEM uploads (CRC errors detected): appears to be the fault of
NetRunner and can be reproduced with any protocol driver on the
BBS/server side (FDSZ and CEXYZ both failed in the same manner)
......@@ -376,7 +397,7 @@ By: EmTec, Innovative Software, Markus Schmidt
OS: Win32
Version: 5.02
URL: http://www.emtec.com
Tested: Xmodem, Ymodem, Zmodem uploads and downloads
Tested: XMODEM, YMODEM, ZMODEM uploads and downloads
Failed: none
......@@ -392,24 +413,26 @@ the "sexyz v" command. We're also very interested in reports of compatibility
Credits
-------
The Xmodem (a.k.a. MODEM, MODEM2, XMODEM) protocol was originally created by
Ward Christensen in 1977.
The XMODEM (a.k.a. MODEM, MODEM2) protocol was originally created by Ward
Christensen in 1977.
The XMODEM-CRC protocol (XMODEM derivative using a 16-CRC for error detection
rather than XMODEM's 8-bit checksum) was created by John Mahr.
The Ymodem (a.k.a. YMODEM) and Zmodem (a.k.a. ZMODEM) protocols were created
and documented (poorly) by Chuck Forsberg; Ymodem being primarily a set of
enhancements to Ward's Xmodem protocol. Ymodem-G (a.k.a. YMODEM-g) was also
created by Chuck.
The YMODEM, YMODEM-G and ZMODEM protocols were created and documented by Chuck
Forsberg; YMODEM being primarily a set of enhancements to Ward's XMODEM and
Mahr's XMODEM-CRC protocols.
The X/Ymodem code used in SEXYZ was written by Rob Swindell <rob [at] synchro
The X/YMODEM code used in SEXYZ was written by Rob Swindell <rob [at] synchro
[dot] net>, migrated from the Synchronet Transfer Protocols (STP) program
circa 1997.
The Unix "stdio" mode support in SEXYZ was written by Stephen Hurd (a.k.a.
Deuce) of Synchronix/FreeBSD Synchronet stardom and "scary code" infamy.
The Zmodem code in SEXYZ is based on zmtx/zmrx v1.02 (C) Mattheij Computer
The ZMODEM code in SEXYZ is based on zmtx/zmrx v1.02 (C) Mattheij Computer
Service 1994 by Jacques Mattheij <jacquesm [at] hacktic [dot] nl>. Although
SEXYZ's Zmodem code no longer resembles zmtx/zmrx much, it served as a good
SEXYZ's ZMODEM code no longer resembles zmtx/zmrx much, it served as a good
starting point, and Jacques' version of Chuck's ZMODEM.DOC was very helpful!
The 16-bit CRC table and calculation macro was (unwittingly) contributed by
......@@ -422,5 +445,5 @@ SEXYZ includes portions of the Synchronet XPDEV and SMBLIB libraries which
are licensed under the GNU Lesser General Public License (LGPL).
http://www.fsf.org/licensing/licenses/lgpl.txt
Synchronet BBS software is written by and copyright 2006 Rob Swindell.
Synchronet BBS software is written by and copyright 2008 Rob Swindell.
http://www.synchro.net/docs/copyright.html
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment