A File Transfer Protocol Module
Supporting Xmodem, Ymodem, Zmodem, and their variants
Copyright (C) 1993 by Cutting Edge Computing
All Rights Reserved.
An OS/2 version of CE-XYZ is also available. CE-XYZ/2 is a full 32-bit
protocol module for OS/2 version 2.0 and higher. XYZ2-100.ZIP is available
from FidoNet node 1:2240/176, or by calling the BBS at 1-313-743-8464.
This program is free for non-commercial use. Commercial users are granted
a license to use CE-XYZ if, and only if, the user has purchased a license
to use The Blue Wave Offline Mail Door. Your Blue Wave Offline Mail Door
Registration Certificate is sufficient "proof" of license to use this
If you are a commercial user and would like to use this protocol module for
other purposes, please write to the address below with contact information
so that we may negotiate a license fee.
Software authors that would like to distribute CE-XYZ in their distribution
packages will be granted a license to do so for a reasonable, one-time
licensing fee. Please contact me at the address below for more
information. Special hooks are provided in the developer's edition for
executing CE-XYZ directly from your applications, no matter what programming
language you may be using. Source code is NOT provided - however any minor
cosmetic/color changes, default settings, and a customized title banner can
be done with no extra fee (other than the licensing/redistribution fee). All
licensing is done with a one-time flat fee. There are no "per-copy" or
"royalty" fees involved.
Cutting Edge Computing
PO Box 90476
Burton, MI 48509
FidoNet : 1:2240/176
InterNet: [email protected]
There is no warranty for this software, either expressed or implied. The
user assumes full responsibility for the use of this software.
Because this is a "free for non-commercial use" program, no support will be
given for this program, except in the following cases:
1) User has also registered one of The Blue Wave Offline Mail Doors,
produced by Cutting Edge Computing.
2) To commercial users who have paid the licensing fee to Cutting Edge
3) BBS authors, after they have paid the one-time licensing fee to
Cutting Edge Computing.
General help with this protocol engine can be obtained through the
International FidoNet BLUEWAVE Echo. Netmail (except in the above cases)
will not be answered, but bug reports will be worked on.
The purpose of this program is to provide a file transfer protocol module
specifically designed for use with The Blue Wave Offline Mail Door.
Although the 'windowing' of the transfer screen is designed so that the
current BW mail doors' user status is left on the screen (which is why I
say it is BW-door specific), it can be used in the place of ANY external
protocol module, such as DSZ and GSZ.
The file transfer protocol module is excellent for use on BBS systems, as
it provides security against users uploading files to a remote-defined
path on the BBS system. (The default, and only, mode of batch uploading
is the same as DSZ/GSZ's "restrict" keyword). Users will not be able to
upload files to any path except for the path that you specify. Also, the
FTP does not allow the "overwriting" of an existing file.
The file transfer protocol (named "CE-XYZ", and referred to as the FTP
throughout the rest of the document) currently supports the following
- Zmodem with 32-bit CRC 1024 byte subpackets
- Zmodem with 16-bit CRC 1024 byte subpackets
- ZedZap with 32-bit CRC 8192 byte subpackets
- Ymodem-Batch 128 byte blocks (True Ymodem)
- Ymodem-1K 1024 byte blocks
- Ymodem-G 1024 byte blocks
- Xmodem-1K 1024 byte blocks
- Xmodem CRC/Checksum (CRC is the default, fallback to Checksum if remote
end doesn't seem to like the CRC method)
The FTP can use 3 different methods of "talking" to your serial port:
- FOSSIL communications (most compatible with FidoNet systems, default)
- Direct communications (standard for most comm programs)
- Interrupt driven communications (fastest, takes over INT 14h)
Because the FTP can utilize a FOSSIL driver, it can support shared IRQs
(unlike DSZ/GSZ) and "non-standard" IRQs if the FOSSIL driver has the
capability (X00 supports shared IRQs).
The FTP is command line driven; it must be invoked with command line
parameters specifying, at the very least, the locked speed of the port
and the protocol transfer method.
In order to accomodate terminal and BBS programs that require the use of
a DSZ-style log file, the FTP will create/append to a DSZLOG-type log file
if the following environment variable is set:
If the CEXYZLOG environment variable is not set, then the driver looks for
the DSZLOG environment variable. (CEXYZLOG always has precedence over
DSZLOG). If the DSZLOG environment variable is not set, then no protocol
logging will take place. The log file generated by CE-XYZ is 100% DSZ
COMMAND LINE PARAMETERS
In order to successfully invoke the FTP, you must use at least the
following command line parameters:
/L or /B to specify either the locked speed or the line speed (or both).
/R or /S to specify send/receive mode
/P, if your modem is not on COM1 to specify the port.
Below is a description of all available command line parameters. Any
command line parameter that does not start with a / or a - is assumed to
be the file name(s) to send or receive. More on file name parameters in
the next section. All command lines are case insensitive (capital
letters and lower-case letters will do the same thing.)
* EXAMPLE COMMAND LINE PARAMETERS ARE GIVEN AT THE VERY END OF THIS DOCUMENT *
information beginning on line number 8 of the display in
order to "fit into" the window left by BW mail doors. By
line of the window beginning on a different line.
/T1 through /T8 are valid. If
8, 8 is used. If
/N<1st_last> - If you pass a User Name to the protocol engine, the name
will be displayed on the screen so you know who is online
(mainly for BBS usage).
/NGeorge_Hatchew would display my name on the left-most
column of the display screen. Please note that an
underscore between names IS REQUIRED.
no port is specified, the driver defaults to COM1. To
invoke the driver on COM2, use "/p2".
port should be locked. High speed modem users should use
one of /L19200, /L38400, /L57600, or possibly /L9600. If
you do not specify the locked baud rate, the driver will
try to open the port at the rate specified with the /B
is also specified, /B is used for time and CPS
estimations ONLY. If you do not have a locked serial
port, you should specify the connect rate of modem with
/B. /B300, /B1200, /B2400, /B7200, etc. are some
The use of the /B command line parameter is not
absolutely required if you use a /L command line
parameter, but transfer estimations will be wrong if you
do not. The use of /B with /L is much like the
"estimate" command in DSZ/GSZ.
supported protocols. The following /R switches are
/Rx - Receive file with Xmodem-CRC (Checksum fallback)
/Rxcrc - Receive file with Xmodem-CRC
/Rxchk - Receive file with Xmodem-Checksum
/Rx1k - Receive file with Xmodem-CRC (1024 byte blocks).
/Ry - Receive file(s) with Ymodem-Batch
/Ry1k - Receive file(s) with Ymodem-Batch (1024 byte blks).
/Ryg - Receive file(s) with Ymodem-G
/Rz - Receive file(s) with Zmodem
/Rzap - Receive file(s) with ZedZap (a mutant Zmodem that
transfers up to 8K in one subpacket).
supported protocols. The following /S switches are
/Sx - Send file with Xmodem-CRC (Checksum fallback)
/Sxcrc - Send file with Xmodem-CRC
/Sxchk - Send file with Xmodem-Checksum
/Sx1k - Send file with Xmodem-CRC (1024 byte blocks).
/Sy - Send file(s) with Ymodem-Batch
/Sy1k - Send file(s) with Ymodem-Batch (1024 byte blks).
/Syg - Send file(s) with Ymodem-G
/Sz - Send file(s) with Zmodem
/Szap - Send file(s) with ZedZap
communications method to use. The
/Ufos - Use the installed FOSSIL for port communications.
This is the default mode. If you want FOSSIL
communications, you need not specify a /U
/Udir - Use direct (standard) communications. Next to
having an installed, working FOSSIL driver, this
method is the most compatible.
/Ufas - Use the FAST, interrupt driven communications
routines. This may not be compatible with all
serial cards and/or BIOS. The FTP will "take
over" INT 14h, and restore the previous 14h
vector upon termination. (This should allow you
to use /Ufas, even if you also have a FOSSIL
driver installed. A FOSSIL "int 14 recapture"
should *not* be necessary upon normal
termination. If you experience lockups, it is
most likely interference from other TSR
programs or system incompatibilities. In this
case, use /Udir instead.
Passing File Names to the FTP
Any command line parameter not preceeded with a "/" or a "-" is assumed
to be the file name to send or receive.
To send files with the FTP, simply enter the name(s) of the files you
would like to send on the command line, with a full
drive:\path\filename.exe specification, if the file is not in the
current directory. In SEND mode, a file name specification is
Wildcards (? and *) on the SEND command line are supported. If the
requested protocol is a batch protocol (all but Xmodem and Xmodem-1K),
the FTP will locate all matches to the wildcard specification and then
begin a batch send. If the requested protocol is Xmodem or Xmodem-1K,
only the first directory match to the wildcard specification will be
sent. (Xmodem and its variants can only send or receive one file at a
In addition to wildcards, file LISTS are supported. Suppose you had a
straight-ASCII text file containing the following:
--- Contents of FILE.LST ---
----- End of FILE.LST ------
To send all of the files contained in this list, place an "@" symbol in
front of the list file name, as in:
CEXYZ.EXE /P2 /L38400 /B14400 /Sz @FILE.LST
Or, if FILE.LST is not in the current directory, use:
CEXYZ.EXE /P2 /L38400 /B14400 /Sz @E:\SOMEWHER\FILE.LST
If the FTP is requested to receive files via one of the batch
protocols, a file name to receive is NOT required on the command line.
Files received will be placed in the current directory with the file
name given by the sending system.
If you would like to place received files in a directory other than the
current directory in batch protocol mode, simply enter the name of the
directory on the command line to receive the file(s) to:
CEXYZ /P1 /B2400 /Rz E:\Files\Download
If the directory E:\Files\Download exists, the FTP will place the
received files there.
Supposing you are downloading a file called THISFILE.ZIP via Zmodem,
and you would like to place it in the directory C:\FILES with the file
name of MY-DL.ZIP, simply specify the complete file name. The file
name received from the sender will be overriden. Example:
CEXYZ.EXE /B1200 /Rz C:\Files\My-DL.Zip
If you are receiving files via Xmodem or Xmodem-1K, a full file name
specification is REQUIRED on the command line, since these 2 protocols
do not support the passing of a file name. Example:
CEXYZ /P4 /L38400 /B2400 /Rx E:\Files\Download\Myfile.arj
EXAMPLE COMMAND LINES
Modem on COM4, locked at 38400 bps, connected at 9600 bps with a user,
receiving a batch upload with Ymodem-G to D:\BBS\FILES\UPLOAD directory:
CEXYZ.EXE /l38400 /b9600 /p4 /ryg d:\bbs\files\upload
Modem on COM1 (default), no locked port, connected at 1200bps, receiving
a file via Xmodem:
CEXYZ.EXE /b1200 /rx filename.ext
Modem on COM1, no locked port, connected at 2400bps, receiving files via
Zmodem to the current directory:
CEXYZ.EXE /b2400 /rz
SAMPLE ENTRIES INTO THE BWUTILS PROTOCOL EDITOR
If your port is not locked, you must leave out the /L command line
parameters shown below. If your port is locked at a different BPS rate,
you must, of course, specify *your* locked port speed in the place of
If CEXYZ.EXE is not on your DOS PATH statement, you must specify the full
path in front of "cexyz" shown below. IT IS NOT ENOUGH TO HAVE CEXYZ
in your BW mail door directory, because the door changes directories on
an upload in order to support unregistered-DSZ restrictions on supplying
an upload path!
Protocol Hotkey : Z Default: Yes
Protocol Title : Zmodem Batch : Yes
Send CommandLine: cexyz.exe /p%P /L38400 /b%B /sz %F
Recv CommandLine: cexyz.exe /p%P /L38400 /b%B /rz %F
Protocol Hotkey : 8 Default: No
Protocol Title : ZedZap (8k Zmodem) Batch : Yes
Send CommandLine: cexyz /p%P /L38400 /b%B /szap %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /rzap %F
Protocol Hotkey : Y Default: No
Protocol Title : Ymodem Batch : Yes
Send CommandLine: cexyz /p%P /L38400 /b%B /sy %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /ry %F
Protocol Hotkey : K Default: No
Protocol Title : Ymodem-1K Batch : Yes
Send CommandLine: cexyz /p%P /L38400 /b%B /sy1k %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /ry1k %F
Protocol Hotkey : G Default: No
Protocol Title : Ymodem-G Batch : Yes
Send CommandLine: cexyz /p%P /L38400 /b%B /syg %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /ryg %F
Protocol Hotkey : 1 Default: No
Protocol Title : Xmodem-1K Batch : No
Send CommandLine: cexyz /p%P /L38400 /b%B /sx1k %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /rx1k %F
Protocol Hotkey : X Default: No
Protocol Title : Xmodem Batch : No
Send CommandLine: cexyz /p%P /L38400 /b%B /sx %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /rx %F
Protocol Hotkey : C Default: No
Protocol Title : Xmodem-Checksum Batch : No
Send CommandLine: cexyz /p%P /L38400 /b%B /sxchk %F
Recv CommandLine: cexyz /p%P /L38400 /b%B /rxchk %F