As part of the Ridiculous Gopher Project, in which I make a blog and gallery using the gopher protocol, I wanted to make a way for readers to comment on the gopher-protocol blog. The gopher protocol does support telnet, so I thought I might write a minimal program that allowed one to comment via telnet.
This morphed into making a minimal BBS which I will call Pupper BBS. Pupper BBS is a tiny BBS with just enough functionality to let users read and write messages and to upload and download files. This is what BBS’s used to do.
The message-reading and message-writing functionality came together pretty quickly by using MySQL and ncurses++’s forms and menus. But the upload and download drew me down a rabbit hole. The BBS upload and download protocol is call ZModem. All modern day ZModem code
seems to descend from the venerable rzsz program by C Forsberg of Omen Technology. I spent a week converting lrzsz into a library I call libzmodem.
But to actually test out my BBS’s upload and download, I will need a telnet client program that can send and receive by ZModem. This seems like it was pretty common, but, everything seems to be a little bit broken. There are various projects call ztelnet and zssh, none of which compile on my Linux box.
So, no maybe I can start debugging Pupper BBS’s upload and download, which are quite broken, apparently.