HydraCom Version 1.00 A sample implementation of the HYDRA Bi-Directional File Transfer Protocol HydraCom was written by Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT COPYRIGHT (C) 1991-1993; ALL RIGHTS RESERVED The HYDRA protocol was designed by Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT and Joaquim H. Homrighausen COPYRIGHT (C) 1991-1993; ALL RIGHTS RESERVED Blank page HydraCom Blank page HydraCom HydraCom Table of contents Page i 1 General Information . . . . . . . . . . . . . . . . . . . . 1 1.1 Protocol information . . . . . . . . . . . . . . . . 1 1.2 Program description . . . . . . . . . . . . . . . . 1 1.3 Program features . . . . . . . . . . . . . . . . . . 2 1.4 System hard- and software requirements . . . . . . . 2 1.5 Disclaimer . . . . . . . . . . . . . . . . . . . . . 2 1.6 HydraCom / source license . . . . . . . . . . . . . 3 1.7 Hydra protocol license . . . . . . . . . . . . . . . 4 1.8 Credits . . . . . . . . . . . . . . . . . . . . . . 5 1.9 Acknowledgements . . . . . . . . . . . . . . . . . . 5 1.10 Hydra in other software (also FidoNet mailers!) . . 5 1.11 Other environments/operating systems . . . . . . . . 5 1.12 Where to send your spare funds . . . . . . . . . . . 6 1.13 Support and contact addresses . . . . . . . . . . . . 6 2 Description of specific features . . . . . . . . . . . . . . 7 2.1 Split screen chat during a Hydra session . . . . . . 7 2.2 Resuming aborted transfers . . . . . . . . . . . . . 7 2.3 Networks and Multitaskers . . . . . . . . . . . . . 7 2.4 Using a FOSSIL driver . . . . . . . . . . . . . . . 9 2.5 Using a Video FOSSIL . . . . . . . . . . . . . . . . 9 2.6 AutoStart Hydra transfers . . . . . . . . . . . . . 10 2.7 Aborting a Hydra transfer . . . . . . . . . . . . . 10 2.8 Configuration utility HydraCfg . . . . . . . . . . . 10 2.9 Reliability . . . . . . . . . . . . . . . . . . . . 11 2.10 Protocol performance . . . . . . . . . . . . . . . . 11 2.11 HST and other half-duplex links . . . . . . . . . . 12 3 Commands and Options . . . . . . . . . . . . . . . . . . . . 13 3.1 Options . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.1 port N . . . . . . . . . . . . . . . . . . . . . 14 3.1.2 speed N . . . . . . . . . . . . . . . . . . . . 14 3.1.3 line N . . . . . . . . . . . . . . . . . . . . . 14 3.1.4 parity . . . . . . . . . . . . . . . . . . . . . 15 3.1.5 dropdtr . . . . . . . . . . . . . . . . . . . . 15 3.1.6 nocarrier . . . . . . . . . . . . . . . . . . . 15 3.1.7 noinit . . . . . . . . . . . . . . . . . . . . . 15 3.1.8 handshake . . . . . . . . . . . . . . . . 15 3.1.9 log . . . . . . . . . . . . . . . . . . . 15 3.1.10 level . . . . . . . . . . . . . . . . 16 3.1.11 result (DSZ logfile) . . . . . . . . 16 3.1.12 noresume . . . . . . . . . . . . . . . . . . . . 16 3.1.13 nostamp . . . . . . . . . . . . . . . . . . . . 17 3.1.14 receive . . . . . . . . . . . . . . . . . 17 3.1.15 nobell . . . . . . . . . . . . . . . . . . . . . 17 3.1.16 mailer . . . . . . . . . . . . . . . . . . . . . 17 3.1.17 nooriginator . . . . . . . . . . . . . . . . . . 17 3.1.18 hdxlink . . . . . . . . . . . . . . . . . . . . 17 3.1.19 txwindow N . . . . . . . . . . . . . . . . . . . 18 3.1.20 rxwindow N . . . . . . . . . . . . . . . . . . . 18 3.1.21 link options . . . . . . . . . . . . . . . . . . 18 3.2 Commands . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.1 send [ ...] [@ ...] . . . . . 19 HydraCom Page i Page ii Table of contents (continued) HydraCom 3.2.2 get [[]] . . . . . . . . . . . . . . 20 3.2.3 term . . . . . . . . . . . . . . . . . . . . . . 20 3.3 Default configuration file . . . . . . . . . . . . . . . 21 4 Using HydraCom as an external protocol . . . . . . . . . . . 22 4.1 Interface methods . . . . . . . . . . . . . . . . . . . 22 4.1.1 Opus-style external protocol interface . . . . . 22 4.1.2 DSZ-style external protocol interface . . . . . 23 4.1.3 Exit codes (errorlevels) . . . . . . . . . . . . 23 4.2 Using HydraCom with terminal programs . . . . . . . . . 24 4.2.1 Telix . . . . . . . . . . . . . . . . . . . . . 24 4.2.2 Communique . . . . . . . . . . . . . . . . . . 24 4.2.3 Commo . . . . . . . . . . . . . . . . . . . . . 25 4.2.4 Procomm Plus . . . . . . . . . . . . . . . . . . 25 4.2.5 TeleMate . . . . . . . . . . . . . . . . . . . . 26 4.2.6 Boyan . . . . . . . . . . . . . . . . . . . . . 26 4.2.7 Qmodem . . . . . . . . . . . . . . . . . . . . . 27 4.3 Using HydraCom with BBS software . . . . . . . . . . . . 28 4.3.1 Maximus . . . . . . . . . . . . . . . . . . . . 28 4.3.2 Opus . . . . . . . . . . . . . . . . . . . . . . 28 4.3.3 QuickBBS and RemoteAccess (FileDoor) . . . . . . 29 4.3.4 RBBS-PC . . . . . . . . . . . . . . . . . . . . 29 4.3.5 Wildcat! . . . . . . . . . . . . . . . . . . . . 29 4.3.6 XBBS . . . . . . . . . . . . . . . . . . . . . . 31 Page ii HydraCom HydraCom Page 1 1 General Information 1.1 Protocol information Full specifications of the Hydra protocol as well as the HydraCom sources (in C) are freely available. Developers may use either or both to implement Hydra into their own software, port Hydra to other machines and operating environments, etc. The packages containing these files have been widely distributed, but will always be available from the authors' own systems. Please refer to the license and other important information further along this document. 1.2 Program description HydraCom is a stand-alone driver which implements the Hydra bidirectional file transfer protocol developed by Arjen Lentz and Joaquim Homrighausen. HydraCom provides a service for communications programs which do not (yet) have with Hydra support internally. HydraCom can be installed as an external transfer protocol driver like other external drivers. HydraCom also provides a simple terminal function. Because HydraCom's sources are available, they can also serve as a sample implementation of the Hydra protocol for other developers to take a look at. HydraCom Page 1 Page 2 HydraCom 1.3 Program features - Simultanous bidirectional file transfer - Split screen chat during Hydra session, without line noise - Comprehensive manual for installation and advanced features - Program source code and protocol specification freely available - Stand alone or external call from any BBS or terminal software - Compatible with both Opus and DSZ style interfacing - Hydra (and HydraCom) can be used in FidoNet Technology Mailers - Userfriendly full-screen setup utility HydraCfg, mouse supported - Good stability on bad connections, speedy error recovery - Safe protocol, no deadlocks or misunderstandings - Tolerance towards network and satellite delays - Handles 7-bit or even less transparent connections - Seperate escaping options for Telenet, XON/XOFF, 7bit, etc - Maximum performance without ever compromising reliability - All packets (including chat packets) protected by CCITT CRC-32 - Retain file's original size and date/time - Automatic startup with special character sequence (AutoStart) - Resume aborted transfers without unfinished files floating about - Numerous transfer options for sysop and users - Supports FOSSIL and VideoFOSSIL - Internal communication routines supporting 16550 UART - Hardware and software flow control - Shared file open for network operation - Internal small terminal with ANSI/VT100 emulation and AutoStart - Fast screen writes, DESQview aware - Releases spare CPU time to DESQview or DOS 1.4 System hard- and software requirements - IBM XT, XT286, AT286, 386, 486, PS/2 or clone/compatible computers. - MS, PC or compatible DOS version 3.00 or higher. - About 128K of free memory space. - HydraCom is able to operate with certain non IBM-compatible serial hardware, provided a suitable FOSSIL and perhaps video FOSSIL driver is installed. There are various FOSSIL drivers available for true compatibles, like Opus!Comm, X00 and BNU, but also for the Tandy 2000, Heath Zenith, DEC Rainbow, Philips :YES and many others. Some of those are implemented as TSR (Terminate and Stay Resident) programs, others (like X00.SYS and BNU.SYS) as device drivers.In addition, use of a Video FOSSIL is supported. 1.5 Disclaimer This program is provided "as is" and comes with no warranties of any kind, either expressed or implied. In no event shall the authors be liable to you or anyone else for any damages, including any lost profits, lost savings or other incidental or consequential damages arising out of the use or inability to use this software. Page 2 HydraCom HydraCom Page 3 1.6 HydraCom / source license HydraCom, its associated utilities (HydraCfg) and the HydraCom sourcecode may be freely distributed, copied and used, no fee charged. All files, executables and sourcecode remain the copyrighted property of Arjen G. Lentz and LENTZ SOFTWARE-DEVELOPMENT. The distribution archives should remain intact with no files removed or modified. For special purposes, it is allowed to repack the archives using a different compression system. HydraCom may be bundled up with for instance terminal or BBS packages, even commercial ones, provided the buyer/user is clearly informed about the fact that Hydra and HydraCom are free, not owned by the distributor/retailer in question, and is not included in any possible charge regarding the rest of the package. This documentation must also be present so the user can inform himself about Hydra and HydraCom. The same rules apply to inclusion in shareware and CD-ROM libraries. In all cases, the author of HydraCom must be given credit in any informational screens and literature that contain such information. The Hydra/HydraCom sourcecode may also be freely used and integrated into other software or library, provided this is clearly stated in any informational screens and literature pertaining to this program, and credit is given to the original author. If the sourcecode of that program or library is released or otherwise published, the notices present at the top of every Hydra/HydraCom source file must be retained in their original unmodified form. In addition to the above license, everyone using any part of the sourcecode, programs or files is fully bound by the general license of the Hydra protocol as present in the Hydra protocol description document. For easy reference, the paragraph in question is reprinted below. Any use of, or operation on (including copying/distributing) any of the above mentioned files implies full and unconditional acceptance of this license and disclaimer. HydraCom Page 3 Page 4 HydraCom 1.7 Hydra protocol license You are granted a license to implement the HYDRA file transfer protocol, HYDRA hereafter, in your own programs and/or use the sample source code and adapt these to your particular situation and needs; subject to the following conditions: - You must refer to it as the HYDRA file transfer protocol, and you must give credit to the authors of HYDRA in any information screens or literature pertaining to your programs that contains other such information (credits, your own copyrights, etc.). - HYDRA will always remain backwards compatible with previous revisions. HYDRA allows for expansion of its features without interfering with previous revisions. It is, however, important that different people do not expand the protocol in different directions. We therefore ask you to contact us if you have any needs/ideas regarding HYDRA, so development can be synchronized and beneficial to all. - If your implementation cannot converse with past or future revisions as supplied by us, then you must refer to it as "HYDRA derived", or as "a variation of HYDRA", or words to that effect. Page 4 HydraCom HydraCom Page 5 1.8 Credits Zygimantas Cepaitis, Jan Stozek, Jac Kersing, Joaquim Homrighausen, Jeroen van Drie, Martin Cleaver, Henk Wevers, Jan Bredenbeek, Ron van der Nagel, and all other equally friendly creatures of the universe and cyberspace are hereby saluted in gratitude for their diverse efforts regarding the Hydra protocol and this software. HYDRA was designed by Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT, and Joaquim H. Homrighausen. 1.9 Acknowledgements - IBM PC, XT, AT, PS/2 and PC-DOS are trademarks of International Business Machines Inc. - MS-DOS is a registered trademark of Microsoft Corporation. - All other brand and product names are trademarks or registered trademarks of their respective holders. 1.10 Hydra in other software (also FidoNet mailers!) It's simple, nag the author of that software and give him this package with all the information. There is not a single reason for the developer in question not to integrate the Hydra protocol in his/her software. It will even add to its value. And if they don't do it now, they'll have to later after the competition has done it... A number of FidoNet technology mailers offer Hydra as their primary protocol. Please refer to the HYDRA specifications for detailed information about HYDRA in FTS-0006 (YooHoo) and EMSI mailsessions. 1.11 Other environments/operating systems Ports of a Hydra source (or a new implementation) to other platforms and operating systems are strongly encouraged. Because of the protocol's extreme flexibility Hydra may run on machines with the most severe restrictions where other protocols could never work. Please send us a note if you've implemented or ported Hydra, so we can keep track of its progress accross the different platforms in cyberspace. If you can send us sources or executables, even better. We will try to maintain a library of all this stuff. HydraCom Page 5 Page 6 HydraCom 1.12 Where to send your spare funds The HydraCom executable and full sourcecode have been made available free of charge in order to aid rapid distribution, acceptance and integration of this new protocol in existing and new libraries, terminal, BBS and other software, and the like. However, a donation recognizing my work would be very much appreciated, especially if you are making money of it yourself. Such donations will be used specifically on small practical datacommunications projects and investments in Eastern Europe I am involved in, at this moment particularly in Lithuania. Unless you don't want it, your name will be listed in a support file. If you contact me at the address below before sending a donation, I may be able to provide you with an address or account number in your vicinity rather than having you waste time, effort and money on international transfers. Any donation, however small, will thus be used purposefully for the good of communications in general. If because of Hydra you are making a lot of money off your Bulletin Board, library, software or distribution business, you may want to consider a larger or periodical donation. Thanks for your support! Arjen Lentz. 1.13 Support and contact addresses This software being free, there is no real support it. However, I will try to help you solving any problems if you ask nicely, and perhaps other users can be of assistance too. In FidoNet a HYDRA conference may be available near you for discussing the protocol and its implementations. Hydra and HydraCom were designed and written by: Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT Langegracht 7B, 3811 BT Amersfoort, The Netherlands AINEX-BBS +31-33-633916 (V.32BIS/V.42BIS/HST14k4) FidoNet node 2:283/512 (Arjen Lentz) Internet: arjen_lentz@f512.n283.z2.fidonet.org Hydra was designed in cooperation with: Joaquim H. Homrighausen 389, route d'Arlon L-8011 Strassen Luxembourg FidoNet 2:270/17 joho@ae.lu Page 6 HydraCom HydraCom Page 7 2 Description of specific features 2.1 Split screen chat during a Hydra session During a Hydra transfer you can chat with someone on the other side, and without that dreaded line noise! Just like all other packets, chat data is protected by CRC-32 and retransmitted when it doesn't come accross unscaved. Once a Hydra session is past the init state, you can start chat chat mode on your side by pressing Alt-C. A message is sent to the remote informing about this fact. You type in the bottom window, and any text from the remote appears in the upper window (split screen). Meanwhile you can still keep track of the file transfer progress at the op of the screen. The chat option does not effect protocol reliability. A Hydra session is prolonged even after all files have been sent/received, but only so long as both sides are active in chat mode. If one side quits, the session is then immediately finished. You can end chat mode on your side by pressing Alt-C again. If you type nothing in 60 seconds, chat mode is automatically ended. Hydra will inform you in your local window at what point it iss possible to start a chat mode. Similarly, informative messages about the chat facilities on the other side will appear in your remote window. During file transfer, chat text will appear in chunks. A smooth chat would serously degrade performance of the file transfers! Bulletin Board sysops may want to disable the bell noise of the chat facility with the 'nobell' option. Chat will still be available then, but without unwanted noise from the remote. 2.2 Resuming aborted transfers HydraCom does not allow such uncompleted files to float around on your disk, but rather renames the file to a unique file name and keeps a log with the original file-information of all interrupted transfers in that directory; this is an especially useful feature for BBS, because you can now enable bad-transfer recovery on upload without having to keep track of incomplete files. And for users it saves time because they do not have to transfer the complete file allover again, but only the part which was not yet transferred. This feature may be disabled with the 'noresume' option. 2.3 Networks and Multitaskers HydraCom opens files in shared mode so that it may be used in a multiline environment on LANs and under multitaskers such as DESQview. You just need to make sure any control files have different names (correct task number, in case of the Opus-interface). HydraCom Page 7 Page 8 HydraCom 2.4 Using a FOSSIL driver In addition to the internal serial communication routines the program can also make use of the popular FOSSIL interface, which enables less- compatible MS-DOS machines to run the same software without special modifications, just after loading another FOSSIL driver designed for that machine. The internal communication routines automatically detect and use FIFOs in the the 16550 UART, providing better throughput at high speed. A 16550 also decreases the chance of bytes getting lost (overrun). Also on some fully compatible machines a FOSSIL driver may give better results than the internal routines. Most BBS and point systems will usually already have a FOSSIL driver resident. For best results, set the FOSSIL receive and transmit buffers to at least 4KB (4096 bytes). HydraCom will complain if either or both are smaller, but the program will still function. Smaller buffers may cause more CPU time to be used, a lower transfer performance, and bytes may be lost causing transmission errors. 2.5 Using a Video FOSSIL The distributed executable HydraCom.EXE uses a windowing library which features fast direct screen access (DESQview aware), internal extended ANSI/VT-100 emulation for the terminal, and the capability to use a Video FOSSIL (like the VFOS_IBM/VFOS_BIO BinkleyTerm screen drivers by Bob Hartman). If you use a Video FOSSIL with HydraCom, make sure you have very recent version! Old versions of VFOS_IBM and VFOS_BIO have a bug in a couple of functions that the windowing library uses. BinkleyTerm does not use these functions, so you may not have noticed this problem before. Contact me for patched versions, or the corrected Video FOSSIL source files. All information HAS been forwarded to Bob Hartman. Note: when compiling the HydraCom sources yourself without modification, console I/O functions are used because the windowing library is not freely available. Contact me if you are interested in purchasing this library anyway (includes the complete sources in C and inline assembler). Page 8 HydraCom HydraCom Page 9 2.6 AutoStart Hydra transfers A Hydra session can be started automatically upon receipt of a special AutoStart sequence: ASCII: 24 99 65 92 102 53 92 97 51 24 97 Chars: Ctrl-X c A \ f 5 \ a 3 Ctrl-X a This is the Hydra START packet, which is always hex-encoded for clear passage through even the most restricted links. Before the START packet Hydra also transmits the letters 'hydra' in lowercase followed by a CR (ASCII 13), to start the Hydra protocol from for instance a Unix command line. To be certain the string is detected, strip the 8th bit of all incoming bytes and then ignore all ASCII characters 0-31 and 127 except ASCII 24 before comparing it to the next character in the autostart string. 2.7 Aborting a Hydra transfer A Hydra session may be aborted at any moment by pressing the Escape key. When your end is not engaged in a Hydra session but the other side is, typing at least 5 consequtive Ctrl-X will abort the remote Hydra. 2.8 Configuration utility HydraCfg To create and edit the default configuration of HydraCom, a utility HydraCfg is provided where all options and settings can be changed and checked in a user friendly full screen windowed environment. If a mouse driver is present, it may be used to move the cursor around and select options. When HydraCfg is called without commandline parameters, it searches for HydraCom.EXE first in the current then in all the directories listed in the DOS PATH. If found, and a file HydraCom.CFG is also present in that directory, that is the file that will be read and edited. If HydraCom.CFG doesn't yet exist, HydraCfg asks if you want to create it. If HydraCom.EXE is not found, a HydraCom.CFG may be created/edited in the current directory. You may also specify a full path/filename of a HydraCom.CFG style file on the HydraCfg command line, in which case no search is done. See the section about the default configuration file for more information. HydraCfg can provide additional information about options on the bottom line of the screen, if the file HydraCfg.HTX (helptext) is present in the same directory where HydraCom.EXE is located. HydraCom Page 9 Page 10 HydraCom 2.9 Reliability A remote machine may crash, jump out of a batch file or otherwise die on you while you are on-line. Hydra maintains a special braindead timer, aborting a session when there has been no REAL progress for two minutes. This may save you a lot of money when using Hydra in an automated environment, especially on international phonecalls! Other protocols have been known to keep a transatlantic line open for more than 6 hours with nothing happening.... big auch. The Hydra protocol has been designed in such a way that deadlocks or misunderstandings between the two sides cannot occur. Hydra is extremely tolerant towards network and satellite delays. If Hydra reports a 'timeout' or 'retry', this does not necessarily mean something terrible is happening. The protocol has a different design and therefore behaves differently from what you will be used to. If things go really wrong the transfer will be aborted anyway so there is no need to worry, the messages are just so you have some information about what is going on. For example, Hydra sometimes re-transmits a packet after a number of seconds, just in case the other side has missed it previously. Because of line delay the acknowledgement to the original packet may already be under way. In this case the duplicate packet is ignored, so the transfer is not delayed. If a packet does get lost, this alternative tactic speeds up recovery. 2.10 Protocol performance Contrary to the hype surrounding other protocols, Hydra does not pretend to be the fastest file transfer protocol in cyberspace. In general it is about as fast as the other top protocols, giving you a choice on grounds of reliability and versatility rather than outragious claims. Every protocol has a certain amount of overhead because of error detection and other facilities; this overhead has of course been minimized, but Hydra will not provide the user with options to increase performance in such a way that reliability is affected. This is what other protocols sometimes do, and often don't tell the user about it (nor of the consequences). Even so called 'errorfree connections' such as MNP and V.42 links are NOT 100% errorfree. Some errors slip through, and sometimes a byte gets lost or mangled between the modem and the computer or the communications routines. And to be fair, the actual gain in performance is always minimal; in rounded percentage terms it sounds appealing but in effect most claims amount to no more than about 10 seconds on a transfer of more than 10 minutes. Hardly worth it, wouldn't you agree? Page 10 HydraCom HydraCom Page 11 Some other bidirectional protocols add up the performance of the two directions, of course giving nice figures when comparing to unidirectional protocols. But this is really unfair. Hydra reports separate figures for each file transfered, and stays on the conservative side. You should not trust the performance ratings for transfers which last less than a minute! Okay.. you don't have to believe all this: ignore the numbers reported by the various protocols, and time a transfer yourself. Make sure you use a file large enough for at least 5 to 10 minutes transfertime, otherwise the results will not be reliable for comparison. And watch the behaviour of a protocol on for instance a bad connection; will it choke and abort or handle the situation well? 2.11 HST and other half-duplex links Hydra can also handle HST and similar links that have one high-speed channel and only a low-speed backchannel. Simultanous bidirectional transfer is not effective in this case, causing continuous line turnarounds and slowing down transmission dramatically. If you are a user, want call a BBS at HST speed, and upload and download in the same session, use the 'nooriginator' and 'hdxlink' options together. HydraCom will then first receive all files, then transmit. If you set the options even for other real full duplex connections like V.22(BIS) and V.32(BIS), HydraCom will not use its bidirectional capability then either. So use this only when required by the specific modem connect. In practise, it is easier if you just upload and download in a seperate Hydra session if you have an HST connect. Then there is no need to use these options at all. Bulletin Board sysops should NEVER set these options at all! The Hydra protocol is protected against deadlock; if both sides are in one-way transfer mode, this will be detected and one-way mode switched off. Of course, if you can choose between for instance an HST and a real full duplex connect, the choice is easy... full duplex every time! HydraCom Page 11 Page 12 HydraCom 3 Commands and Options Usage: HydraCom [port N] [speed N] [ ...] [ ...] General: options: port N Comport [1..16] (default COM1) speed N Com-speed [300..57600] (default current speed) line N Actual line speed (use 'speed' to set comport) parity Set 7E1 instead of 8N1 (forces option highbit) dropdtr Drop DTR if carrier is lost nocarrier Disable carrier detection noinit Don't init/deinit FOSSIL driver handshake Enable soft (XON/XOFF), hard (RTS/CTS) or both log Logfile to log the goings on level N Level of logging, 0=max, 6=min (default=2) result Log transfer info to DSZ compatible logfile noresume Disable receive bad-transfer recovery nostamp Don't stamp with original but current filetime receive Path to store any received files nobell Disable bell noise in Hydra session chat feature link options: mailer Mailer mode, used by Dutchie (see documentation) nooriginator Not originator, fallback to one-way transfer allowed hdxlink Force one-way transfer mode (only with nooriginator) xwindow N Transmitter window size (default 0=full streaming) rxwindow N Receiver window size (default 0=full streaming) option xonxoff Escape/strip XON/XOFF characters option telenet Escape/strip Telenet escape option ctlchrs Escape/strip ASCII 0-31 and 127 option highctl Apply above three also for 8th bit option highbit Encode for 7 bit, strip 8th bit commands: send [ ...] Send /@/nothing + receive get [[]] Only get file(s), if name is specified, get first file (name override) and skip all others term Small terminal + send & AutoStart capability Page 12 HydraCom HydraCom Page 13 3.1 Options An option modifies the default settings of HydraCom, like the communications port number and speed of the communications port. Each option consists of a keyword, sometimes followed by a string or number. Keywords may be abbreviated to their first three letters. For example: POR 2 means that HydraCom should use com port 2. This is not true for any parameters following an option, these should all be fully spelled out. Case is not important. Invalid options and parameters are ignored. 3.1.1 port N Select the comport HydraCom will use, in the range of 1 to 16. The default value is COM1. The internal communication routines can only handle port COM1 to COM4 (3F8/IRQ4, 2F8/IRQ3, 3E8/IRQ4, 2E8/IRQ3). 3.1.2 speed N When using a FOSSIL driver, valid communication speeds are 300, 1200, 2400, 4800, 9600, 19200 and 38400 bits per second. With the internal async routines, any speed between 300 and 57600 BPS may be given. If the SPEED option is not specified, HydraCom will use the current speed of the port. Locking of the speed should be done in the FOSSIL setup, not in HydraCom. If the FOSSIL is locked the speed statement does not have any effect. 3.1.3 line N For high-speed modems, the SPEED option determines the speed of the comport while LINE determines the speed that will used for efficiency calculations, data packet size and timeouts. It is absolutely vital that HydraCom knows what speed the line has, and the program has no way of knowing unless you inform it! If the FOSSIL is not locked and the speed option is present, the line option need not be specified as well. The thresholds for data packet size and timeouts are at 1200, 2400, and 4800 bps. Ie. if speed is set to 38400 but the actual link speed is 14400, there's no need to use the line option as for HydraCom there is no practical difference between 14400 and 38400 when calculating the necessary figures. But if the comport is locked at 9600 or 38400 and the line speed is 2400 or even lower, you'll have problems if you don't specify the correct line speed here. HydraCom Page 13 Page 14 HydraCom 3.1.4 parity The parity option selects 7 databits, even parity (7E1) instead of the default 8 databits no parity (8N1), also forcing 'option highbit' so the Hydra protocol makes the necessary arrangements for a 7-bit connection. 3.1.5 dropdtr This option will probably only be useful for BBS with modems set to auto-answer. If specified, HydraCom will lower the DTR (Data Terminal Ready) line on the serial port. For HAYES-compatible modems with a set-up of S0=1 or something similar, this will cause the modem NOT to answer the phone while the DTR remains low. The BBS then has time to recycle and raise the DTR again when ready for the next call. 3.1.6 nocarrier Mostly of use with certain null-modem cables or stand-alone operations within the HydraCom terminal function, this option configures HydraCom so it will not check the DCD (Data Carrier Detect) line on the serial port. Normally, HydraCom will abort upon loss of carrier. 3.1.7 noinit Do not initialise the FOSSIL on startup. Running under some software like the mailer program Dutchie, HydraCom is not required nor supposed to initialise the resident FOSSIL driver. This option will make sure HydraCom will refrain from attempts at initialisation. 3.1.8 handshake This option allows the enabling of various types of flow control. SOFT enables xon/xoff handshaking, HARD enables rts/cts handshaking, and BOTH obviously enables both software and hardware flow control. FOSSIL drivers force RTS/CTS handshaking for a locked communications port. The internal communications routines (ie. the one used when there is no FOSSIL driver present) do not support XON/XOFF handshaking, nor do they apply RTS flow control (modem->computer). CTS flow (computer- >modem) is supported. Setting software flow control automatically forces on 'option xonxoff' to make sure Hydra escapes these characters in its packets. 3.1.9 log If specified, HydraCom will log messages to this file as well as printing them on the screen. The output is similar to the format used by programs like Dutchie, The-Box, BinkleyTerm, Opus and Maximus. Page 14 HydraCom HydraCom Page 15 3.1.10 level This option is only really useful if LOG is also specified. Loglevel may be anything from 0 to 6. Level 0 logs anything up to Hydra packet control data. Level 6 logs only severe or fatal errors. The default loglevel is 2. 3.1.11 result (DSZ logfile) This option will create or append a DSZ (by Omen Technology) compatible log file, which some programs (such as the RBBS-PC or XBBS BBS) use to determine the outcome of a transfer. The format is as follows: bps cps errors H = file is sent, R = file is received. Actual number of bytes transferred. Line communication speed in bits per second. Protocol performance in characters per second. For very short transfers a rating of 9999 cps is given. Number of transmission errors occurred (0). Number of flow control stoppages (0). Size which was used for the last block in the transfer (1024). Full path and file name. Serial number of the program on the other side (0). HydraCom will not write a result line for aborted transfers, but the result file itself will always be created (empty). Prior to processing any other options the DSZLOG environment variable is checked and (if present) copied to the RESULT option file name. 3.1.12 noresume By default, HydraCom uses an internal mechanism to keep track of interrupted transfers: It keeps unfinished received files BAD-XFER.??? where ??? is a counter from 000 to 999 used to create a unique file name. The original file name, date/time and size of the file are logged to a file called BAD-XFER.LOG. Both files reside in the directory where files are received. With NORESUME, HydraCom will not keep/log unfinished downloads but instead deletes the partial file. HydraCom Page 15 Page 16 HydraCom 3.1.13 nostamp Don't retain the original file date/time information which was transmitted, but stamp received files with the current date/time. Some BBS software requires this to be able to scan for new files. 3.1.14 receive Files received through HydraCom will be stored in directory if this option is used. Otherwise files will accumulate in the current directory. 3.1.15 nobell Normally, the BEL character (Ctrl-G) will cause the remote system to give a short beep. This may not be desired if HydraCom is for instance used under a BBS, so with this option you can disable the beep. It only applies to the chat mode during a Hydra tranfer session. 3.1.16 mailer Selects mailer mode, changing HydraCom's behaviour slightly as required by the Dutchie mailer which uses it as an external protocol for FidoNet technology mail sessions. 3.1.17 nooriginator Instructs HydraCom to NOT act as the 'originator' side in case of trouble during a transfer. The 'answer' side will switch to one-way transfer mode under certain conditions (equivalent to the hdxlink option). Normally you won't need this option yourself, its main use is for programs like Dutchie in combination with the 'mailer' and 'hdxlink' options. Refer to the section about HST and other half-duplex modems earlier in this document for a more complete description of these options. 3.1.18 hdxlink Forces one-way transfer mode (half duplex Hydra, disables bi- directional transfers). This option only works if nooriginator is enabled as well. This option is meant for use on HST and similar asymmetrical connections. Refer to the section about the 'nooriginator' option above for more information. Page 16 HydraCom HydraCom Page 17 3.1.19 txwindow N The number of bytes to send before remote acknowledgement of reception should be received. If it's set to 0 (default) HydraCom won't wait for acks and use continuous streaming. In severe situations, this option may be necessary for links via packet switched networks and sattelites to prevent runahaid (windowed streaming). Primarily, this option is used when the machine on the other side cannot handle simultanous serial and disk I/O (segmented streaming). The exact receive and transmit window sizes are negotiated individually by the two sides at the start of a Hydra session, so if the other side has set a more limited value, that is the window size that will be used for that direction. 3.1.20 rxwindow N The number of bytes to receive before acknowledgement (ACK) should be returned to the sender (default 0=none). Refer to the description of the 'txwindow' option above for more information about windowed transmission. 3.1.21 link options Link options are used to send data over nondefault lines (such as 7- bit links, and such). Hydra will encode all data to a suitable format, send it, and the receptor will decode the data back to it's original format. option xonxoff Escape/strip XON/XOFF characters. (ASCII 17 and 19) option telenet Escape/strip telenet escape sequence CR-@-CR (ASCII 13,64,13) option ctlchrs Escape/strip ASCII characters 0 to 31 and 127. option highctl Makes xonxoff/telenet/ctlchrs also escape/strip their respective characters if the high bit. option highbit Encode for 7 bit transfers. (encodes 8 bit to 7 bit) HydraCom Page 17 Page 18 HydraCom 3.2 Commands HydraCom expects a command at the end of the command line (ie after all options). There are three possible commands: send, get and term. Send is for sending files, get is to just receive files without sending any, and term is the mini terminal. All commands normally abort upon loss of carrier unless the 'NOCarrier' option is used. 3.2.1 send [ ...] [@ ...] The send command causes HydraCom to send . If no file specification is given, this command will just act like a get and just receive files. @ will cause HydraCom to read a file called in [] and send the files specified in that text file. Each entry in that file should be placed on one line eg, when you want to send TEST.*, NEWHYD?.ARJ and PAL_112.C, you could place them in SEND.TXT, which could contain: C:\MAIL\FILE\TEST.* C:\DOCS\NEWHYD?.ARJ E:\C\DEVLP\PAL_112.C Normal file specifications and multiple @ctlfiles may be used on one commandline, and you can specify paths and the usual DOS wildcards * and ? (which are expanded to the file names which match the specification). In @ctlfiles aliasing and transfer options may be used. Aliasing means that HydraCom will send a file with an alias name, specified after that name, so if your @-file contain a line C:\DOCS\ANY.TXT 01A551FC.A0D then HydraCom will send the file ANY.TXT as 01A551FC.A0D. A '#' sign as the first character on a line will cause HydraCom to truncate the file(s) to zero length after succesful transfer. A caret (^) tells HydraCom to delete that file after it has been sent. Page 18 HydraCom HydraCom Page 19 3.2.2 get [[]] The get command may be used if there are no files to be sent, just received. With no parameter, get will put received files into either the current directory or the directory specified in the 'receive' option. If a path specification follows the get command, this overrides the 'receive' option. A get path specification MUST have a trailing backslash! If a filename specified, HydraCom will receive just one file, store it with the specified name, and refuse any other files the remote wants to send. This 'feature' is provided because some software cannot handle batch uploads and wants to know the name of the single file before the transfer. 3.2.3 term This activates HydraCom little built-in dumb terminal. HCOM_DOS has ANSI emulation if you have ANSI.SYS loaded; HCOM_GEN has an extended ANSI/VT-100 emulator in its windowing library. Downloading in the HydraCom terminal is fully automatic, HydraCom detects the remote has intiated a Hydra session (AutoStart). Any files in the upload queue will also be transmitted. There are several options and commands in the terminal mode: PgUp: Enter/edit file upload queue; HydraCom asks for file specification(s), wildcards are allowed. You may NOT specify a @ctlfile. No upload is started with this command, the specified files will be sent when either the remote initiates a session or when you press PgDn. PgDn: Download; HydraCom initiates a Hydra session and waits for incoming files/packets. Any files selected with PgUp will be sent. You cannot select files for download within HydraCom, you must do this within the BBS you're calling; ie. you can not just 'request' files from the remote during a Hydra session. Alt-X: Exit the terminal and HydraCom. Alt-C: Clears the screen and puts the cursor in the upper left corner. Alt-H: Hangup (on hook), this command drops the DTR line and causes an immediate log-off (BBS do have a G)oodbye command.. use it!). Alt-E: Toggle duplex, this command toggles the local echo mode. Alt-B: Toggle stripping the 8th bit of all incoming characters. This toggle is forced on if the 'parity' commandline option has been specified. HydraCom Page 19 Page 20 HydraCom 3.3 Default configuration file At start-up, HydraCom will check whether a file named .CFG exists in the directory where the HydraCom executable resides, and if it does, scan it for options. This is always done first, regardless of what interface method is used to pass other commands and options. By .CFG we mean that, if for instance the HydraCom executable is named HydraCom.EXE, the name of the configuration file checked for would be HydraCom.CFG. C:\WORK\HC.EXE will search for C:\WORK\HC.CFG. Each line in the configuration file may contain an option and possible parameters. Everything after a semicolon (;) will be ignored (comments). ;----------[ sample terminal configuration file ]---------- port 2 speed 38400 receive c:\comms\download\ nocarrier log c:\bbs\hydracom.log level 4 The configuration file may not contain a command (send, get or term). Statements on the command-line override those in the configuration file. You can use the utility HydraCfg to create and edit a default configuration file for HydraCom in a more userfriendly environment (full-screen windowed, mouse support, information and help texts). Page 20 HydraCom HydraCom Page 21 4 Using HydraCom as an external protocol HydraCom can be used within a lot of, if not all, communication programs which support intelligent DOS access like errorlevels, shelling to batch files, spawning, etc. Most programs have external protocol support themselves, but HydraCom can also work with programs which can use only external view or edit programs. In that case you can call exactly the same batch file as described for Procomm Plus. You could for example put the upload batch file instead of a view utility and fill in the download batch file instead of the editor utility. When you are asked what file to view, you'd fill in the filename(s) to be uploaded. 4.1 Interface methods 4.1.1 Opus-style external protocol interface HydraCom can operate as an Opus external protocol driver, as used in the Opus bulletin board system and various mailer, BBS and terminal packages which utilize the Opus method of calling external protocol drivers. Upon exit to the external protocol writes an Opus-style control file, the name of which depends on the file name of the executable HydraCom. If, in your case, HydraCom is called HydraCom.EXE, then Opus will write a file called HydraCom.CTL to the drive/path where HydraCom.EXE resides, from which HydraCom will read all necessary information about the transfer. Hydra will create a special Opus-format logfile HydraCom.LOG (in the same directory where HydraCom.CTL was stored) which provides the BBS software with a list of files that were sent/received. The Opus 1.0x method is quite similar to the way Opus 1.10 and later versions call external file transfer protocols. HydraCom handles both methods. The Opus-protocol interface mechanism is automatically used if a .CTL control file is found. If a task number (-tN where N is the task number) is specified on the HydraCom commandline, the new method is used which merges a task number into the filename of the control and log files for multi-line operation. A control file for task 3 when calling HydraCom.EXE would be named HydraC03.CTL. Note: any commandline parameters after the -tN option are ignored, HydraCom immediately proceeds with processing the .CTL file. HydraCom Page 21 Page 22 HydraCom HydraCom uses the -pN (port number, 0 based) and -bN (speed) from the commandline, other Opus-style parameters are ignored. In the .CTL file the following Opus-style options and commands are used and fully implemented in HydraCom: port Com port, identical to the 'port' commandline option. baud Com speed, like the 'speed' commandline option. modem Extended modem information like real line speed, handshake options, carrier mask. log Log file, identical to the 'log' commandline option. upload Where received files are to be stored; like the 'receive' commandline option. send Specification of file(s) to be sent; DOS wildcards are allowed, as well as the special transfer options. If the file specification is preceded by a # character, the specified files will be truncated to zero-length after successful transmission. A ^ character has the files deleted after successful transmission. If another name is specified on the same line (no path), this name is given to the remote instead of the real name (aliasing). get As Hydra is a full duplex protocol, this command is completely ignored. A receive path should be specified using the 'upload' or 'receive' option. Other (unknown to HydraCom) Opus-style commands are just ignored. All HydraCom commandline options (not commands!) be also be present in a .CTL file. Take care that all options are listed in the .CTL before the first 'send' line, otherwise those options will not have been read yet. 4.1.2 DSZ-style external protocol interface HydraCom can be called by any program using the DSZ style of passing options/commands; of course the options and commands differ from DSZ, but the basic mechanism is the same with support for @ctlfiles and usage of the DSZLOG environment variable. For more information on the format of the DSZ result logfile, see the section about the 'result' option. 4.1.3 Exit codes (errorlevels) Some programs check error codes to decide whether a transfer has been completed successfully or not. HydraCom uses the following errorlevels: 0 Normal termination 1 Transfer aborted, carrier lost, etc. 255 System error: not enough memory, etc. Page 22 HydraCom HydraCom Page 23 4.2 Using HydraCom with terminal programs 4.2.1 Telix Telix 3.15 supports up to 4 external protocols, 3.20 supports 5. You need to create a single batchfile (HYDRAUP.BAT) with one line: HYDRACOM port %2 speed %1 uploads D:\DL\ send %3 %4 %5 %6 %7 %8 %9 (change D:\DL\ to the path of your own download directory) Start Telix, and from the main terminal window press Alt-O (Configure Telix), select option P (Protocol options) and select a free protocol line (A-D/E) (or replace an unused protocol): Key H Protocol name Hydra Upload filename HYDRAUP Download filename HYDRAUP BAT or script Batch DL name NO Autodownload string (press ctrl-X)cA\f5\ (autodownload string only available in Telix 3.20) Now press ENTER (returns to configure Telix) and select option W (Write setup to disk). Telix will automatically return to the main terminal window. 4.2.2 Communique HydraCom batchfile that can be used for Communique: @echo off rem HydraCom installation under Communique 1.0x rem ------------------------------------------- rem Name : Hydra rem Key : 1 rem Upload : CU_Hydra.BAT *C *B *D *U *G rem Download: CU_Hydra.BAT *C *B *D *U cls HydraCom port %1 speed %2 nocarrier handshake receive %3 send %5 HydraCom Page 23 Page 24 HydraCom 4.2.3 Commo Add the following to your COMMO.MAC file in the appropriate places: (the upload protocol menu) HydraCom using HYDRACOM.EXE {goto phyd} (the download protocol menu) HydraCom using HYDRACOM.EXE {goto phyd} (no download macro, just uses uploade macro) (upload macros) HydraCom {:phyd} {call gfnu} {exec-a HYDRACOM por %_por spe %_spe han hard rec %uldir sen %file} {} HYDRACOM.EXE And the following line to your COMMO.SET file: {aut=phyd,^XcA\f5\a3^Xa} Auto Receive, HydraCom 4.2.4 Procomm Plus This has been tried and found to work with the Procomm+ TestDrive version. For use with Procomm Plus, you need to create one batch file which calls HydraCom: HydraCom port 1 line 2400 receive D:\DL\ send %1 %2 %3 %4 %5 %6 (change D:\DL\ to the path of your own download directory) Procomm+ does not provide the line speed, comport number or the path to store received files; you should fill them in yourself. It's not terribly user-friendly and it may cause you trouble. But there's not much you can do about it except get different terminal software. You should specify the batch file in the Procomm Plus protocol set-up menu. From the Procomm Plus main menu, press Alt-S (Setup Utility), then choose PROTOCOL OPTIONS and take an empty pair of entries, either A-B, C-D or E-F, if you would choose A-B, then press A, fill in the HydraCom upload batchfilename (HPCU) without extention, and press ENTER. Then press B, fill in HPCD and press ENTER. Then press escape, select the SAVE SETUP option, and press escape again. Page 24 HydraCom HydraCom Page 25 4.2.5 TeleMate Create a batchfile, to be placed in the TM home directory: HydraCom.EXE port %2 speed %1 receive D:\DL\ send %3 (change D:\DL\ to the path of your own download directory) Now start TeleMate and from within the TeleMate main terminal window, press Alt-O (Options). Select option P (Protocol). Select a free protocol line, or replace an unused protocol: Name Hydra Key H Upload batch HYDRAUP Download batch HYDRAUP Prompt for dl name NO Exit the protocol window with the OK selection (returns to 'Options' window), select option S (Save options) and press ESC (back to main terminal window). 4.2.6 Boyan To use HydraCom with this program, run Boyan and press Atl-C (Configure BOYAN) from the main terminal window. After this, select option D (Disk, directory, files) and then option H (Path for external protocols) Now enter the drive and path where HydraCom.EXE can be found, don't forget the trailing backslash '\'. Then press ENTER (finish entry). Press ESC (returns to 'configure BOYAN' screen), select option X (External transfer protocols) and select a free protocol line entry (0-9). Protocol name Hydra Menu letter H External file HydraCom Prompt for DL-name? NO Upload \DC-[%P:HydraCom port %MD speed %MS rec dl>\ send %TF] Download \DC-[%P:HydraCom port %MD speed %MS rec dl>\ get] (Don't forget to specify the downloadpath including the trailing '\') Press ENTER (finish entry). Then press ESC (returns to 'configure BOYAN' screen) and, again, press ESC (back to main terminal window) HydraCom Page 25 Page 26 HydraCom 4.2.7 Qmodem To use HydraCom with the Qmodem communications package, enter Qmodem, and from the main terminal window, press Alt-N (Configure Qmodem) Then select option P (Protocols) and select a free protocol line entry (0-9). Select character H Protocol Hydra Upload BAT HYDRAUP.BAT Download BAT HYDRAUP.BAT Filename Prompt N Finished? press ESC (returns to 'Protocols' window) and again, press ESC (returns to 'Configure Qmodem' window), select option E (Exit) and select option S (Save Changes) Qmodem will then automatically return to the main terminal window. The batchfile (placed in the Qmodem home directory): HydraCom port %2 speed %1 receive D:\DL\ send %3 %4 %5 %6 %7 %8 %9 (change D:\DL\ to the path of your own download directory) Page 26 HydraCom HydraCom Page 27 4.3 Using HydraCom with BBS software 4.3.1 Maximus Protocol Hydra Type Batch Type Bi LogFile Hydra%K.Log ControlFile Hydra%K.Ctl ; Put in NOS (nostamp) to not retain date/time on received files DownloadCmd HydraCom.Exe por %P spe %W lin %b dro nor nob res %x:Hydra%K.Log rec %v sen @%x:Hydra%K.Ctl UploadCmd HydraCom.Exe por %P spe %W lin %b dro nor nob res %x:Hydra%K.Log rec %v get DownloadString %s UploadString DownloadKeyword H UploadKeyword R FilenameWord 10 DescriptWord 0 End Protocol Note that the DownloadCmd and UploadCmd lines are both a bit long and therefore wrapped in this document. Maximus would also be capable of using the Opus mechanism instead of using DSZ-style, but Maximus 2.00 and 2.01wb have a bug in that code which causes it to pass invalid data in the controlfile. 4.3.2 Opus Opus expects you to specify the path and file name of HydraCom in your Opus control file. Usually, you would want the user to invoke Hydra with the H keystroke, so the name of the HydraCom executable should start with a H, like HydraCom.EXE. In this case, you should add an external file transfer protocol line to your Opus control file which (in case HydraCom.EXE resides in the c:\opus directory) reads: External_file_protocol C:\OPUS\HydraCom.EXE HydraCom Page 27 Page 28 HydraCom 4.3.3 QuickBBS and RemoteAccess (FileDoor) You can offer HydraCom from QuickBBS, RemoteAccess and similar packages with the FileDoor program. For that, you would have to add the specifications for HydraCom to your filedoor configuration file: Protocol 96 T U 20 0 Hydra Usage 0 0 N Y 38400 BiDSZ HYDRACOM.EXE por $1 spe 38400 lin $2 nob rec $8 sen $3 $M Protocol 96 T D 20 0 Hydra Usage 0 0 N Y 38400 BiDSZ HYDRACOM.EXE por $1 spe 38400 lin $2 nob rec $8 sen $3 $M These settings only apply if you use a modem locked at 38400. For information about which settings to change for your modem, please refer to the FileDoor documentation and config comments. 4.3.4 RBBS-PC RBBS-PC uses a file called PROTO.DEF to define the external protocols. Here is a sample PROTO.DEF. Please refer to the RBBS-PC documentation for information concerning the syntax. "H)ydra ",0,S,8,,B,1024,,0.96,,1=E,"D:HydraCom.EXE port [PORT#] speed [BAUD] dropdtr result D:XFER-[NODE].DEF send [FILE]","D:HydraCom.EXE port [PORT#] speed [BAUD] dropdtr result D:XFER-[NODE].DEF get [FILE]" It is one physical line which should not have any CR/LF in the middle. 4.3.5 Wildcat! Wildcat! is a commercial Bulletin Board package, this paragraph will cover the implementation of HydraCom within the Testdrive version. You should create a path to your external protocols, like C:\WILDCAT\EP, where you should store all files related to external file transfers. Wildcat! will also temporarily store the sent and received files there. You should also specify this path in the Wildcat! set-up program, (MakeWild) and don't forget to add to the number of external transfer protocols, also in the set-up program. After that, you should define HydraCom within the external protocol definition part of the set-up. LTR defines the key which a user should press in order to invoke the transfer batch file. At the Up.BAT position, you should define the HydraCom upload batch file and at the Dn.BAT you should define the HydraCom download batch file. Setting the Batch field to Y(es) will allow a batch (multiple files) of files for up- or downloading, this is recommended, though the test-drive version does not support batch uploads. Please note that users cannot invoke external protocols during the period between an event and two hours before the start of that event. Page 28 HydraCom HydraCom Page 29 Wildcat! spawns to dos upon exit to HydraCom and will assign the baud rate to DOS variable %1, the communications port is assigned to variable %2 and the file name(s) (without path) are assigned from variable %3 to variable %9. The batch files must be located in the external protocol directory. Your download batch file would be: CD \WILDCAT\EP HydraCom.EXE port %2 speed %1 sz %3 %4 %5 %6 %7 %8 %9 CD \WILDCAT and your upload batch file could, for example, become: CD \WILDCAT\EP HydraCom.EXE port %2 speed %1 rz [%3] COPY %3 [%5]%4 DEL %3 where the %3 variable denominates the file which is to be received, but this does not need to be specified to make HydraCom receive a file. Variable %4 contains the path to an upload directory which has been specified by the user and variable %5 contains the full drive, path and file name. The latter two variables can be useful in the batch file which calls HydraCom, for example to move files directly to an upload area. These batch files should be named according to the batch file names which you filled in under Up.BAT and Dn.bat in the MakeWild set-up program. To allow as many (seven, %3 to %9) files to be downloaded in one batch as possible, Wildcat! does not use a path, but only uses the external protocol directory. Wildcat! will copy files which are to be sent to this directory (and delete them after the transfer) and will receive files into this directory, a DOS command line is limited to 128 characters, so this saves a path denomination before each file. You can edit PROTOCOL.HLP and add information about HydraCom to it for your users. HydraCom Page 29 Page 30 HydraCom 4.3.6 XBBS The internal XBBS version 1.06 method: XBBS needs a PROTOCOL.TXT, which is made into PROTOCOL.CTL by XPROTO.COM. You could add the next lines to PROTOCOL.TXT in order to install HydraCom in your XBBS. ;sample PROTOCOL.TXT for HydraCom Hydra ;Protocol label H ;Key to select protocol 96 ;Protocol efficiency C:\XBBS\HydraCom.EXE PORT *p SPEED *B send *F;Download string C:\XBBS\HydraCom.EXE PORT *p SPEED *B get ;Upload string type a dozen CTRL-X's ;Abort string Y ;Wildcards? Y ;Multiple file names? Y ;Simultaneous U/D? Y ;use @listfile? Y ;remote filename? Y ;Use DSZlog? N ;not yet used N ;not yet used Please refer to the XBBS documentations for the exact meaning of the PROTOCOL.TXT statements. Then run XPROTO PROTOCOL.TXT in the XBBS home directory and you got yourself a PROTOCOL.CTL with HydraCom. Page 30 HydraCom .