I was initially inspired by XMODEM which I remembered fondly but it doesn’t take a lot of thinking to realize XMODEM is a horrible protocol. (E.g. error correction is nowhere near good enough, one char of line noise can abort the transfer, even the 128 byte packet seems a bit big when you have 2k of RAM and also big compared to my desire to something flush a few bytes of data very quickly to the PC.)
Kermit is better in a lot of ways but it is complicated in terms of unrequired capabilities (7 bit transfers) having the implementation fit into a small space and also be done quickly. In principle I want some advanced features like sliding windows, but it has to be tuned up for a very different case…. For Kermit sliding windows hide speed of light latency, for my case I am trying to hide latency in the USB stack, carefully choose a USB-to-serial converter that’s capable of reliable operation, etc.
I would up with a simplified version of HDLC with a modern choice of CRC function and variable packet sizes that top off around 30 bytes. So I was left with the feeling Kermit was a poor shadow of what people were doing on mainframes 15 years earlier which is a feeling we had about 1980s micros all the time I the 1980s.