I find myself in need of a flow-controlled communication protocol for use over short, mostly reliable, serial links. A straight data dump from a moderately-fast PC tends to swamp the target, especially when the target lacks enough RAM to buffer incoming data (at a decent speed) while a flash write is in progress.
I could cobble something together quickly enough, but it'd be so much nicer to use a protocol that's supported by handy terminal programs.
It looks like ZMODEM is possibly the ticket.
So: look for a spec. Ugh: ancient preformatted .txt file of many pages, replete with lengthy exposition.
Look for a reference implementation. Hmmm... there's lrzsz, ready to hand. Under GPL. Did I mention that this is for a deeply embedded controller, in proprietary equipment? I provide source code to my client, of course, but I don't think it'll be going any further; the client doesn't like to provide source code to end customers, nor to the various intermediaries.
Well, lrzsz says it's based on the old public domain rzsz. Fine. Download the rzsz source bundle. Oops! That's the proprietary version; only the older versions were public domain.
Keep searching. Finally find what I'm looking for, lurking in a subdirectory of the PDOS repository on Sourceforge.
Now to see if it's reasonable to adapt it, or if I have to figure out how the protocol actually works and re-implement it, or if it'd be easier just to make up my own protocol and write a little Ruby utility for the PC side of things.
Update: I'm thinking "my own protocol and a little Ruby utility" is maybe the better option. The various *modem protocols seem overcomplicated, underdocumented, and not really suited to what I'm trying to accomplish. Actually, it may be time to implement my little fieldbus protocol that's been on the drawing board for a while... or maybe not; that's both overkill and mainly oriented toward very different uses.

Comments