

                      xprDModem V2.1 - User/Tech 'manual'

          Copyright 1992-1994 By Pasi Ristioja, all rights reserved.

                (This is giftware release, read license.boring)

                                Mailing address

                                 Pasi Ristioja
                                 Urpiaistie 8
                                96400 Rovaniemi
                                    Finland

                                  Bugreports

                        FIDO: 2:229/888 (Pasi Ristioja)
                    INTERNET: pasi.ristioja@mpoli.fi


 Introduction/Use
~~~~~~~~~~~~~~~~~~

One way transfer should work with any xpr aware commprog if option XN is used,
birectional transfer will need commprog to understand unofficial xpr2.001.
Remember that this protocol is aimed to use only with error correcting modems
(v42/mnp). Of course you can use dmodem without that kind of modem but I
strongly recommend not to. This not mean that error detecting isn't secure.
It's only that protocol isn't designed to handle multiple errors efficiently.

There is major speedup when using DreamTerm 1.x with DModem, this is achieved
using internal double buffering in xprdmodem. This technique offers possibility
handle RXD while TXD is still running, this is very important when doing
bidirectional transfer.
(This was the main reason why I was forced to upgrade xpr2.0.)

Example: (For tech freaks)

1. Dmodem sends 2048 byte block (a) / xpr_swrite
 - DTerm starts to send it and returns immediately.
2. Dmodem sends 2048 byte block (b) / xpr_swrite
 - DTerm checks if a-block is sent already, if not it waits send
   to complete. (To modem)
3. Dmodem sends 2048 byte block (c) / xpr_swrite
   - same as 2

Note: There is no more chatmode -> I'll may add it later.

 DModem options
~~~~~~~~~~~~~~~~
biup yes/no (i) - default is no. (IN)

yes (IY) - Uploader waits receiver(user) to start upload. Only BBS
           should use this! When user wants to make bidirectional
           transfer she/he first chooses what to dnload and then
           starts to upload. Same time BBS starts uploading BUT
           waits 60 seconds before starts actual upload. This means
           that user has 60 seconds to choose which files to send.
           (Without this option autoupload is impossible!)
no  (IN)

block [] (b) - default is 2048. (B2048)

Blocksize, legal range is 256 - 8192. Keep in mind that memory usage is about
blocksize*9. Do not set this much lower than your linkspeed, it may cause error
correcting to give up more easily. (BBS should set this to 8192 if possible)

dpath <path> (d) - default is current directory. (D)

Download path (Generally no use).

upath <path> (u) - default is current directory. (U)

Upload path (Generally no use).

enablexpr2.001 yes/no (x) - default is no. (XN)

yes (XY) - Dmodem will use xpr2.001 specs, bidirectional xfer
           is available only with this.

no  (XN) - Dmodem will use xpr2.0 specs, with this any commprog
           which support xpr should be able to use dmodem but
           bidirectional xfer is impossible.

lowcpu yes/no (l) - default is yes. (LY)

yes (LY) - Dmodem will try to go idle and let other tasks use cpu.
           Only problem is that this somehow depends how commprog
           is implemented its xpr-driver, this can cause lower
           upload performance when doing bidirectional transfer.
no  (LY) - Dmodem steals all available cpu.


 Notes
~~~~~~~~

When I designed this protocol I was forced to upgrade xpr2.0 specs in order to
gain maximum performance, read xprprotocol.doc if you want to learn about
modifications. If you use terminal program which doesn't understand xpr2.001
specs you must use option XN.

 Problems
~~~~~~~~~~

A500     : Bidirectional transfer is almost too much for this old
           machine, do not use greater DTE than 19200 if you want
           error free transfers. Also reducing screen colors to 2
           or 4 will help.

HardDrive: Old drives (like supra) will cause serial overruns when
           writing to disk. If this is the case you must use RAM:
           as download directory.
 Misc
~~~~~~
This version will not work with 1.0ß - 2.0, do not use them.
CRC routine is © Kimmo Mustonen, thanks.


 Performance
~~~~~~~~~~~~~
		      Estimations about packed data cps
		     (Multiple by 2 to get combined cps)

--------+-------------+------+------+------+
Filesize|    Effiency |  V32 | V32b | Zyx16|
--------+-------------+------+------+------+
  2048	|	99.32 | 1093 | 1688 | 2034 |
  4096	|	99.59 | 1095 | 1693 | 2040 |
  8192	|	99.72 | 1097 | 1695 | 2042 |
 16384	|	99.79 | 1098 | 1696 | 2044 |
 32768	|	99.82 | 1098 | 1697 | 2044 |
 65536	|	99.84 | 1098 | 1697 | 2045 |
131072	|	99.85 | 1098 | 1697 | 2045 |
--------+-------------+------+------+------+
                        2196   3394   4095   Combined best

- Blocksize 2048, 11 bytes long filename
- Calculations do not include protocol sync (start)

Note: DModem do not acknowledge received files and due that real performance
      gain against ZedZap etc. is even higher than chart shows.
