I've just released a new version of my Xmodem program for CP/M.
The big improvement in this version is configuration file support. You can create a text file called XMODEM.CFG that allows you to define "any" I/O port for transferring data, including port initialization.
There are several other improvements over 1.03, including a few commands that make the configuration file nice and flexible, better timeouts to prevent hanging when an I/O port is misbehaving, and an option to let you tell XModem how fast is your CPU, so that timing is right - even if you are running on a e.g. 6 MHz Z80.
You can also choose to transfer via the CP/M CON: driver, provided that your CON: driver does not strip parity. The CP/M RDR: and PUN: devices can also be used, with the same caveat.
This version will use all available RAM, up to 32K, for buffering, to speed up transfers. Even so, it will also run in as little RAM as 4K bytes.
Also included in this release is a sample XMODEM.CFG file, with setup for many classic S-100 serial boards, including all the MITS serial boards, the Imsai SIO-2, the Cromemco TU-ART, the Vector Graphic Bitstreamer and Bitstreamer II, the Compupro Interfacer and Interfacer II, and the Processor Technology 3P+S. If you have some other serial port, these examples will make it obvious how to build a configuration file for that port.
The (rather verbose) source code is here:
https://drive.google.com/file/d/0B-XdfCubTNJJSG15VEs5cFFJQ0U/view?usp=sharing
The 3 Kbyte executable is here:
https://drive.google.com/file/d/0B-XdfCubTNJJTGR3ODN4X2xkX1k/view?usp=sharing
and the sample configuration file is here:
https://drive.google.com/file/d/0B-XdfCubTNJJVGVYSm5fZjRhR0k/view?usp=sharing