CE-XYZ v1.00 A File Transfer Protocol Module Supporting Xmodem, Ymodem, Zmodem, and their variants Copyright (C) 1993 by Cutting Edge Computing All Rights Reserved. ALSO AVAILABLE -------------- 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. LICENSE AGREEMENT ----------------- 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 protocol module. 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: george.hatchew@f176.n2240.z1.fidonet.org WARRANTY -------- There is no warranty for this software, either expressed or implied. The user assumes full responsibility for the use of this software. SUPPORT ------- 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 Computing. 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. PURPOSE ------- 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. DESCRIPTION ----------- The file transfer protocol (named "CE-XYZ", and referred to as the FTP throughout the rest of the document) currently supports the following protocols: - 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: SET CEXYZLOG=cexyz.log SET DSZLOG=dsz.log 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 compatible. 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 * /T - By default, the FTP places its window and other information beginning on line number 8 of the display in order to "fit into" the window left by BW mail doors. By using /T, you can tell the FTP to place the first line of the window beginning on a different line. /T1 through /T8 are valid. If is greater than 8, 8 is used. If is less than 1, 1 is used. /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. /P - Specifies the COM port to use for the file transfer. If no port is specified, the driver defaults to COM1. To invoke the driver on COM2, use "/p2". /L - The LOCKED baud rate of the transfer session, if the serial 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 parameter. /B - The actual line speed of the current connection. If /L 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 examples. 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. /R - Use the /R parameter to receive files via one of the supported protocols. The following /R switches are supported: /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). /S - Use the /S parameter to send files via one of the supported protocols. The following /S switches are supported: /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 /U - The /U command line parameter tells the FTP which serial communications method to use. The can be one of the following: /Ufos - Use the installed FOSSIL for port communications. This is the default mode. If you want FOSSIL communications, you need not specify a /U parameter. /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. SEND Mode --------- 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 required. 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 time). In addition to wildcards, file LISTS are supported. Suppose you had a straight-ASCII text file containing the following: --- Contents of FILE.LST --- D:\FILES\UPLOAD\ZIPPER.ZIP D:\FILES\UPLOAD\FTP.EXE E:\CPROG\MYFILE.C H:\FD\NODELIST\NODELIST.* C:\BWAVE\*.BW ----- 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 RECEIVE Mode ------------ 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 38400. ************************************************************************* 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! ************************************************************************* Zmodem: ------- 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 ZedZap: ------- 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 Ymodem: ------- 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 Ymodem-1K: ---------- 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 Ymodem-G: --------- 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 1K-Xmodem: ---------- 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 Xmodem-CRC: ----------- 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 Xmodem-Checksum: ---------------- 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