The aggravating thing about CP/M systems in the late '70s and early '80s is that everybody ran same OS and processor and standard UART chips but each had their own floppy formats and few were interchangable. But serial ports were solid, so I wrote a simple 8080 CP/M transfer program called MFT that used simple checksums AND (drum roll!) also sent over file names and supported wildcards!<p>The bootstrap was that I had the 8080 assembler code formatted as debugger commands so you could push the 'source' over the link into a file and feed it into the debugger, patch in the port number for the serial UART chip, then save as an executable. It could have been a commercial product but I was too busy just using it to solve migration problems locally.
I often used Kermit not for speed, but because it had an excellent built in scripting capability. This allowed me to schedule downloads, run remote commands, etc, at night when the phone line wasn't in use:<p><a href="http://www.columbia.edu/kermit/ckscripts.html" rel="nofollow">http://www.columbia.edu/kermit/ckscripts.html</a><p>The scripting also worked for scripting telnet sessions, so it wasn't just for dial up.