

                      X p r T r a n s m i t   V 1.1


	This program is shareware. You may freely redistribute it,
	and if you like it, it would be nice to send me a donation
	of DM 10 (German marks) or U.S.$ 6.

	Without paying the fee, you may use this program for private
	purposes, but *not* for running a BBS. If you pay, you may
	also include the program into a BBS.

	* INCLUDING XPRTRANSMIT INTO ANOTHER PUBLIC-DOMAIN LIBRARY *
	*        THAN THE FRED FISH'S IS STRICTLY FORBIDDEN.       *

	Author:	Andreas Schildbach
		Possenhofener Str.21
		8130 Starnberg
		West Germany
		Tel.+(08151) 4757
		Z-Net: GOONIE@MUSIKBOX.ZER
		(Fido: 2:246/3.2 not yet)
		Bank-Account: BLZ 70054080 Konto 91439


=== Documentation: ===

XprTransmit is a CLI-based interface to all Xpr-protocols (see Fish 261 or
Fish 247). With this program it is possible to simply start any file-trans-
mitting protocol without breaking one's head about "call-back"-functions and
other stuff.

Be sure to have your Arp-Library (Version 39.1 or higher) and the Xpr-Library
you want to use installed to your "libs:"-directory. Up to now XprTransmit was
only tested with "xprzmodem.library" version 2.0 and "xprascii.library" ver-
sion 0.9. Please let me know, if XprTransmit doesn't work with other proto-
cols.


Usage: XprTransmit <Send|Receive> <wildcards> [Lib=<Xpr-Library>] [Dev=<Device>]
                   [Shared] [Baud=<Baudrate>] [Opt=<Options>] [Quit] [Delay]   
                   [Beep].


=== Description of Parameters: ===

SEND | RECEIVE	You must specify exactly one of these switches, depending
		upon you want to upload or download.

WILDCARDS	To select the files to transmit you may use any Arp-style
		pattern. Please consult your Arp manual.

LIB		Specify the full protocol's library-name here. Default is
		"XprZModem.library". Only use lowercase!

DEV		Specify the device you have your (null-)modem connected.
		Default is "serial.device". Only use lowercase!

SHARED		Using this switch the device is opened for shared access.

		IMPORTANT NOTE:
		The internal "Supra 2400zi"'s device named "modem0.device"
		doesn't support shared access. So please try to not use
		shared access.

BAUD		Baudrate to open the serial port. If the device was opened
		with shared mode, it will use the rate on which it is al-
		ready opened. Defaults to 2400.

OPT		The string specified with OPT used to call the Xpr-Library's
		function "XProtocolSetup".

QUIET		With this switch turned on, the info window will not appear.
		Outputs to normal StdOut are not supressed!

DELAY		If you set this flag, XprTransmit will wait appr. 4 seconds
		after the transmit is finished before closing the info window.

BEEP		If set, XprTransmit will DisplayBeep() all screens if transfer
		is complete.


=== Example for Ascii send: ===

XprTransmit Send <file-to-send> Lib=xprascii.library Dev=serial.device
	    Baud=19200 Opt=10 Delay Beep


=== Example for ZModem receive: ===

XprTransmit R Dummy-File Lib=xprzmodem.library Dev=serial.device Baud=2400
	    Delay Beep


=== History: ===

Version 1.0:
(21.4.)	- First release.

Version 1.1 beta (non-public):
(23.5.)	- Included finfo()-callback-function, so the length of files sent is
	  displayed.
	- Lib="" and Dev=""-Arguments now have defaults (see above).
	- Maybe fixed a bug causing "Can't open library xpr*.library".
	- Includes Baud-Rate-Selection.
	- Added some parts of the original docs of some xpr-libraries.

Version 1.1:
(12.6.)	- Fixed last bugs. (Hope so...)


=== Thanks: (alphabetical order) ===

Thanks to W.G.J. Langeveld for calling Xpr into life.
	  Rick Huebner for implementing XprZmodem.
	  Steve Walton for his excellent XprKermit.


=== Known bugs: ===

- I haven't included yet some call-back-functions described in the Xpr-docu-
  mentation. If you discover any messages like "xxx failed." hanging around on
  your CLI window, please let me know.

- The Carrier signal is ignored.


=== Parameters of XprZModem 2.0: (taken out of the original docs) ===

T{Y|N|?}    Text translation mode:
   TY = Text Yes; if receiving, translate CR/LF pairs or solo
        CR chars to normal Amiga LF chars.  Ignore data past ^Z.
        If sending, suggests to receiver that they should receive
        this file in text mode.
   TN = Text No; receive file verbatim, without changes.  If
        sending, suggest to receiver that they receive this
        file verbatim, without translations.
   T? = Text status unknown; if receiving, use sender's
        suggestion as to whether to do EOL translations or not.
        If sending, tell receiver to use default mode, 'cause we
        don't know either.

O{Y|N|R|S}  Overwrite mode:
   OY = Overwrite Yes; if about to receive file with same name as
        one which already exists, delete the old file and receive
        the new file in its place.
   ON = Overwrite No; if about to receive file with same name as
        one which already exists, append ".dup" onto the name of
        the new file to keep them separate.
   OR = Overwrite Resume; if about to receive file with same name
        as one which already exists, resume receiving file data
        from the current end of the existing file.
   OS = Overwrite Skip; if (etc.), tell sender never mind, skip
        this file, we don't want it.  Batch transfers will move
        on to the next file in the set, if any.

Bnnn   Buffer size:
   XPRZModem.library adds a layer of file I/O buffering in
   addition to whatever the comm program may or may not provide.
   This option sets the size of XPRZModem's file I/O buffer in
   kilobytes.  The minimum value is 1 KB, for those using RAM
   drives or fast hard drives, or those whose comm programs
   already provide sufficient buffering.  The maximum value is
   as much contiguous RAM as you have available in your Amiga.
   If you specify more than is actually available, XPRZModem will
   keep decrementing the buffer size requested by 1 KB until the
   memory allocation works.  That way, if your RAM is too
   fragmented to use the amount you request, XPRZModem simply
   uses the largest block available.  Buffering is especially
   helpful for floppy drive users; it keeps your drive from
   continuously gronking and slowing things down all through the
   transfer.

Fnnn   Frame size:
   Although normally avoided, ZModem has the ability to require
   an ACK to be sent from the receiver to the sender every X-many
   data bytes.  Normally you don't want to use this feature,
   because not waiting for ACKs is part of how ZModem works so
   fast.  However, this feature can be very useful in conjunction
   with file I/O buffering on slow devices (namely those floppy
   drives).  If you set up a large I/O buffer to avoid gronking
   your floppy so often, you'll find that when the buffer finally
   *does* get around to being flushed that it can take a looonng
   time; so long, in fact, that the delay can cause timeouts and
   errors.  But if you set your ZModem to require the sender to
   wait for an ACK every buffer's-worth of data, the sender will
   politely wait for you to flush your buffer to the slow floppy
   and send it an ACK saying it's OK to continue now.  This value
   should be set to 0 to disable ACKs (normal mode), or set it to
   the actual number of data bytes allowed between ACKs.  For
   example, if you set B64 because of your floppy, you should
   also set F65536.

     Note that the setting for the option must immediately follow the
option character with no intervening characters ("TY", not "T Y" or "T=Y").
When setting multiple options at once, separate the options from each other
with commas and/or spaces; for example, "TN,OR,F0".  You don't have to
specify all options every time; the options you specify will be merged into
the current option settings, replacing their old values.  Upper/lower case
is not significant.  The default option settings if you don't change
anything are "T?,ON,B16,F0".


=== Parameters of XprKermit 1.5: (taken out of the original docs) ===

The currently supported XPR Kermit server commands are listed below.
The format of the init string is in parentheses, generally simply a
single letter.

    Kermit Finish (F):  Tells a Kermit server that you are done.  The
	remote server will stop being a server.

    Kermit Bye (B):  Tells a Kermit server that you are done;  the server
	will exit and log you off the remote machine.

    Kermit CD (C{dir}):  Change the default directory for files sent or
	received by the Kermit server.  Examples of the init string would
	be 'C/bin' or 'Cuser:[username.amiga]'.

For setting options via an init string, the first character of the init
string must be the letter O (for Options).  Following that letter can
be one or more of the option setting formats listed bellow;  these
can be separated by whitespace and/or commas.

There are three settings which are either "yes" or "no."  Your comm program
will give you some way of setting them interactively.  Simple button gadgets
will be labeled "yes" and "no;"  otherwise, you may see a string gadget,
into which you should type the word "yes" or "no" by hand.  This string is
case-insensitive.  In the init-string, "yes" is represented by the single
upper-case character Y.

    Convert FileName (C{Y|N}):  If "yes," then incoming file names are
	converted to a form acceptable to the Amiga.  Currently, this
	means simply translating them to lower case.  Default "yes."

    Host Server (G{Y|N}):  If "yes," then the host (remote) Kermit is
	assumed to be in server mode.  You will be prompted for file
	names when you request an XPR Kermit receive, and this file
	name will be sent to the server in the form of a Kermit GET
	command.  Default "no."

    Text File (T{Y|N}):  Flags whether the incoming file is text or binary.
	If "yes," then carriage-return/line-feed pairs in the incoming
	packets are converted to a single line-feed before writing the
	packet to a file, and the opposite conversion is made when a file
	is sent to a remote system.  Default "yes".

	If your communcations program supports its own text/binary flag
	(that is, if the xpr_finfo() function exists and can tell XPR
	Kermit whether a given file is text or binary), this option will
	not appear.

Numerical settings are as follows.  Here, the init string key letter should
be followed by a numerical value.

    Packet Length (P{length}):  The Long Packets extension to Kermit is
	fully supported. Setting a packet length larger than 94 (the
	default) enters long packet mode automatically.  If you use long
	packets, it is *strongly* recommended that you use block check 2
	or 3 (see below) if the host Kermit supports them. The current
	limit is 1024 for XPR Kermit;  the default value is 94, the
	longest standard Kermit packet.

    Block Check (B{type}):  This can have the value of 1, 2, or 3, and
	chooses successively more stringent types of error checking on
	the incoming data:  6-bit checksum, 12-bit checksum, and 16-bit
	CRC, respectively.  Default is 1 (6-bit checksum).

    Timeout (O{seconds}):  The length of time XPR Kermit will wait for a
	packet before assuming it isn't coming.  Default 5 seconds.  (The
	O is for Out, as in TimeOut;  T is already taken by the Text flag.)

     Retry Limit (R{number}):  The number of times XPR Kermit will attempt
	to send or receive the next packet of data before quitting.  Notice
	that if the remote end simply stops sending, a length of time equal
	to the retry limit times the timeout will elapse before XPR Kermit
	actually exits.  Default 10 retries.

These can be mixed and matched.  For instance, to talk to a Kermit server
with 750-byte packets, block check 2, binary files, and a 10-second timeout,
the init string could be "OP750,B2,TN,O10".  Cryptic, but usable.


=== The End ===
