Jermit: new Java implementation of Xmodem, Ymodem, and Kermit (Zmodem coming next year) reddit / bbs ---------------------------------------------------------------------- kevinlamonte · 2017-12-29 15:57 Author here. Just wanted to give y'all a heads up that in about a year or so there will be a new cross-platform implementation of the serial protocols. This is the last of the "hard stuff" I had to figure out for Qodem, and wanted to clean up and spinoff. If anyone has desire to write these in another language (Go, Rust, Python, JS, etc.) and is having trouble seeing what Jermit is doing, let me know. My goal is for Jermit to be a learning codebase. ---------------------------------------------------------------------- nineteen999 · 2017-12-31 00:02 I recently did a small Zmodem implementation in C for an [emulated Z80-based system running CP/M inside Unreal Engine](https://i.imgur.com/K44GT1W.png) It hurt a lot more than I expected it to. But it works so that's something I suppose. Thanks for sharing this, although I don't read Java too well I'm sure it will come in handy as a reference. ---------------------------------------------------------------------- kevinlamonte · 2018-01-02 13:34 Wow that looks _so_ cool! A little more of that and we might have Ready Player One... :) Zmodem is pretty awful, that's why I've saved it for last. My Qodem worklog entries related to Zmodem implementation aren't my happiest times. But now that Kermit is basically working (got a commit to get uploaded later today) it will be the rough outline of a new clean Zmodem, with the bugs in the protocol and various implementations outlined. (I have yet to see a Zmodem implementation, including Omen's, that actually behaves as per the spec. We all have to instead 'do it like rzsz' just to communicate.) ---------------------------------------------------------------------- nineteen999 · 2018-01-02 23:34 Thanks for the compliment! The original Zmodem specs are pretty horrible to read in my mind. I expected it to take about 4-5 evenings but it probably took me closer to a month of evenings before I finally had the CRC32 checks working. And while I can transfer singles files in the download direction I have a lot to do to get multi-file and upload working. So mine is a pretty quick-and-dirty implementation. I would have used one of the other implementations but I had two requirements that made me decide to write my own - firstly I needed to have unencumbered code license-wise, and secondly the darn thing needed to fit into 64K RAM along with a telnet client so it can run on the Z80.