This is an XPR 2.0 implementation of the YMODEM protocol. based on bmodem: the BIX modem program by David Betz, BYTE Magazine/BIX Source code modifications and additions needed for XPR are: NO Copyright 1991 Ueli -Lonely Rider- Kaufmann, NO Rights Reserved. ^^ ^^ This software is provided "AS IS" without warranty of any kind, either expressed or implied, with respect to the programs described herein, their quality, performance, or fitness for any particular purpose. In no event will the author(s) be liable for direct, indirect, incidental, or consequential damages. redistribution of this software is permitted, provided that: NOTHING: This is purely Public Domain..!! You can do with it, whatever you want to do..(-: ^^^^ By using or distributing this software, you agree to understand and accept the above. [ I HOPE, YOU UNDERSTOOD..(-: ] changes in: - v2.00 - The library is now really pure.. - Sometimes you could not send files bigger than 256kB. This resulted from the wellknown bug useing 16-bit ints and then compiling some parts of the code with 32-bit ints..)-: The biggest file I sent with v2.00 was the fido-nodelist (ca. 1mB) and everything smelled good.. - v1.90 - Output-option is only used in batch-mode.. - some people had trouble useing xpr-ymodem in conjunction with n-comm v1.92 and atalk3.. > vaporized < (not the people..;-) [ Im KlarText: wenn ein Transfer-Abbruch stattfand, gingen diese zwei Proggies in eine hübsche Endlos-Schlaufe, weil sie dummerweise JEDESMAL einen Abbruch signalisierten anstatt nur einmal..)-: ] - v1.80 - there was a little error in doc. YMODEM command mode character isn't 'M' , it's 'Y' sorry, Urs.. - added new option: YMODEM -a it supports neither CRC nor Checksum and should only be used if there are ERROR-DETECTING AND -CORRECTING modems connected..!! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - v1.65 - if there's no xpr_fnext(), YMODEM batch doesn't fall back in X- / YMODEM state anymore.. - killed dirty enforcer-hit in XPr-Setup - YMODEM-g now stops upload when receiving CAN/CAN ( NOT standard..!! ) - YMODEM-g now tests chkabort(), too - YMODEM-g now aborts pronto if there occur some dirty errors - some code optimations included - some incompatibilities excluded - v1.01 - better outfit - chkabort() implemented - v1.00 - first release technical datas about YMODEM: - it is an amiga'ized version! It is definetly NOT gronking around with single byte reads n' writes or these lame getc() and putc()..!!!! - it will allways send in binary mode.. - it will use a 16384 bytes internal serial input buffer.. - it will use a 8192 bytes internal IO buffer for file handling.. Enough chatting.. Configurable options are: YMODEM mode: Y ------------ - 'X- / YMODEM': you can use this YMODEM as XMODEM, too! YS NOTE: YMODEM is fully compatible with XMODEM, so you can use this XPr-Y as XPr-X, too.. Ist das nicht Pfanni..(-; - 'YMODEM batch': the real one & only YMODEM implementation.. YB - 'YMODEM -g': for those people wanting good troughput YG this mode uses 1 kB blocks and CRC-16 - 'YMODEM -a': for those people wanting best troughput avalaible.. YA this mode uses 2 kB blocks and it does no CRC-checking, because this is already done by the modems.. [ hail, hail HST..(-; ] NOTE: ----- 'YMODEM -g' and 'YMODEM -a' work like YMODEM batch, they just don't send an ACK for received blocks and they can't handle CRC-16 or Checksum errors.. they should only be used by people with highspeed error-detecting and error-correcting modems..!! [ ie: US-Robotics HST, etc. ] by default YB -------------------------------------------------------------------------- CHOP option: Z<1|0> ------------ - when enabled, XPrYmodem will chop files ONLY, if the filesize is unknown.. you can allways enable this option.. NOTE: PAD-out char: '\Z' and *NOT* '\0' like xprxmodem.library does.. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ by default enabled -------------------------------------------------------------------------- OUTPUT option: O -------------- - this specifies the output directory for received files.. by default RAM: -------------------------------------------------------------------------- CRC option: C<1|0> ----------- - when enabled, XPrYmodem will use CRC-16 for error-checking, else it will use Checksum... by default enabled -------------------------------------------------------------------------- 1kB Blocks: B<1|0> ----------- - when enabled, XPrYmodem will use 1024 bytes data blocks, else 128 bdb's by default enabled -------------------------------------------------------------------------- This can be overridden by a environment variable, "XPRYMODEM", containing a setup string, of the following format: NOTE: this works only, if the comm progi supports it.. these options are seperated by commas. The first character of every field is the type, one of: B (1k blocks), C (crc), M (YMODEM mode), O (output), Z (chop). The second char is either 1 or 0, expressing the boolean state of the option. examples: Z0,C1,B1 --> chop disabled, crc on, 1k blocks Z1,C0,B0 --> chop enabled, crc off (checksum), normal 128byte blocks, there are two special options: first char Y second char: S -> X- / YMODEM B -> batch G -> g mode (NOT g-spot..:-) A -> ARQ-mode first char O argument is the local output directory.. ie: Oram:t The user might also be prompted for such a string when XProtocolSetUp() is called, if the comm program does not provide the xpr_options callback function. Ueli Kaufmann..