home *** CD-ROM | disk | FTP | other *** search
- HYDRA protocol sample implementation, Amiga port rev.8 by
-
- Olaf Barthel
- Brabeckstrasse 35
- D-30559 Hannover
-
- eMail: olsen@sourcery.han.de
-
- The Amiga support modules are freely distributable. For further information
- on the remaining distribution refer to the files `hydra.asc' and
- `hydra.doc'.
-
- Many thanks to James McOrmond who supplied the HYDRA source code. This
- program was compiled using the SAS/C compiler, it requires Kickstart 2.04
- or higher to run.
-
- *
-
- What is HYDRA?
- ==============
- HYDRA is a bidirectional file transfer protocol designed by Joaquim H.
- Homrighausen and Arjen G. Lentz similar to Bimodem, a proprietary file
- transfer protocol. It originated in the PC world and, as far as I know, has
- been ported only to the Atari ST yet. This distribution adds an Amiga port.
- The HYDRA protocol can send and receive data at the same time and also adds
- a chat option.
-
-
- What about the source code?
- ===========================
- The source code included in this distribution was edited slightly to allow
- the Amiga implementation to work properly. The original code was
- busy-polling keyboard and serial line, a feature which needed to be
- replaced by multitasking friendly code on the Amiga side. The Amiga port
- tries to emulate the asynchronous serial I/O code the original PC version
- of the HYDRA protocol sample implementation would use.
-
-
- What about the documentation?
- =============================
- The file called `hydra.doc', to be found in the `source' directory
- describes the HYDRA sample protocol implementation in detail. Refer to this
- file for more information on the program.
-
-
- Differences between the Amiga port and the original program
- ===========================================================
- The original implementation did not support the "DEVICE" keyword which was
- added to the Amiga port in order to allow third party serial device drivers
- to be used. The split-screen technique used by the original implementation
- was replaced by multiple console windows. Pull-down menus partly replace
- the odd keyboard commands supported by the original implementation, i.e.
- some keyboard commands work, some don't. There is no Fossil support in this
- implementation ;-) All the features of the original implementation should
- work, although some may not make much sense on the Amiga. There is no
- separate HydraCfg program.
- Where I needed to make changes to the source code my tag "/* OLSEN */"
- indicates where to look for changes.
-
- What's different in revision 2 of this port?
- ============================================
- I had overlooked some MS-DOS dependancies in the source code, namely path
- and file name lengths which used to be limited to 13 and 90 characters,
- respectively. Where such restrictions were obvious they were removed.
- HydraCom now offers an interface to the forthcoming new `term' release
- and in fact any other terminal program that provides the same hooks as
- `term'. If you give the name of the ARexx port `term' has open as the
- device name (i.e. "device TERM") HydraCom will try to interface to `term'.
- If successful, HydraCom will take over serial device processing, blocking
- `term' access to the serial driver. When HydraCom is in posession of the
- serial driver you may transfer files as usual, but remember that `term'
- itself will be disabled while HydraCom is running. When finished, quit
- HydraCom, this will return control back to `term'.
-
- What's different in revision 3 of this port?
- ============================================
- The device was not opened in shared mode, a feature many users have
- requested. The window setup no longer requires 25 lines to fit on the
- screen, now 20 will do.
-
- What's different in revision 4 of this port?
- ============================================
- Hydracom now looks for the Hydracom.cfg file in the same drawer the program
- itself is found in first (for example, if you would have Hydracom stored in
- the "Work:term" drawer, it would try to open the file
- "Work:term/Hydracom.cfg" upon startup). When preparing a list of files to
- upload, you can now use a standard file requester to pick the files from.
- Note that a file transfer currently in progress will *continue* while you
- pick the files to send. When initializing itself, the program will no
- longer complain if less than 20 lines are available for the input window;
- the new minimum value are three lines. The receive and send drawer names
- did not get proper path separator characters appended; this caused files to
- appear in the wrong drawers. File names are no longer converted into lower
- case characters only. A very crude CPS calculation routine now supplies
- data for the transfer progress display. The "Sending" and "Receiving" text
- was off by one line. This has been fixed.
-
- What's different in revision 5 of this port?
- ============================================
- Previous Hydracom releases would set invalid file creation dates. The
- frequent calls to time() would also be very costly in terms of speed. I
- wrote replacements for all routines involved in setting, getting and
- converting times and dates. They should be both faster and shorter now. In
- addition to this the new routines pay attention to the current locale time
- zone settings, always ignoring the global TZ variable. Please note that I
- expect that the Atari ST and IBM-PC implementations of the Hydra protocol
- will transmit time and date values with less precision than the Amiga
- version does.
-
- What's different in revision 6 of this port?
- ============================================
- The cps display (which, by the way, is not very accurate) no longer causes
- the window contents to scroll away on narrow screens. I walked through the
- code and tried to find the Bermuda triangle where all the file names to
- include blank spaces would vanish. I knocked over a bunch of tokenizing
- routines, that should do it. On error or abort, hydracom will no longer
- return result codes to the shell that invoked it that are difficult to
- react upon. If something went wrong, 5 will be returned, otherwise it will
- be 0. This makes it possible to check for "WARN" conditions in script
- files and such. Hardware handshaking never got activated, the code did not
- get called, now it does. All console windows now sport the main pull-down
- menu, not just the bottommost one. The maximum block size is no longer
- limited to 256 bytes, some code got lost.
-
- What's different in revision 7 of this port?
- ============================================
- Temporary file creation should work reliably now, permitting to run
- multiple copies of the program from the same drawer. When going through
- the `term'<->Hydracom rendezvous interface, Hydracom now uses the baud
- rate and serial parameters passed with the rendezvous data. In this case
- Hydracom will ignore the command line options for speed and parity. I also
- went through the code and made sure that when receiving files, existing
- files will get skipped.
-
- What's different in revision 8 of this port?
- ============================================
- The number of error retries is now configurable. I rewrote the code that
- puts up the file requester when collecting file names. This made the
- program pure, it can be made resident now.
-