Skip to content(if available)orjump to list(if available)

QModem 4.51 Source Code

QModem 4.51 Source Code

66 comments

·May 3, 2025

wenc

This brought back memories. I remember dialling into BBSes using Qmodem, downloading QWKs (compressed email packets) from “conferences” (similar to newsgroups).

I would read/reply offline using OLX (Offline Express, a QWK reader also part of the Qmodem suite), and then batch upload my replies (.REPs, also compressed) to the BBS.

This was back in the day when you weren't connected 24/7, and when dial-up wasn’t unlimited (in my country — even if it was, BBSes were node limited so you couldn’t stay connected forever). So participating in BBS conferences meant quick dial-ins and uploads, where most of the messaging/replies was done offline.

Although bandwidth is abundant these days, I still think the QWK/REP idea is an attractive one. There is an art and a beauty to crafting replies offline from the cozy Turbo Vision UI that was OLX.

atombender

Similar story here. I used RoboMail for MS-DOS as the offline reader back in maybe 1992-1993?, connecting to a BBS that interfaced with RelayNet/RIME, which was similar to FidoNet.

RoboMail wasn't TurboVision, but it was very nice as TUIs went at the time. It seems mostly vanished from Google. I was a Turbo Pascal developer myself at the time, and I made an offline reader that I thought was far superior (multiple Turbo Vision windows etc.), but by the time I had gotten close to the point of release, the Internet arrived and I completely lost interest.

I still wish there was an archive of RelayNet, because I used to post a lot, and of course I never kept anything myself. I've never found any archive of the content since it was shut down in 2007.

Also, it's sad to hear that the QWK format's creator died in a swatting incident in 2020, of all things.

EvanAnderson

> Also, it's sad to hear that the QWK format's creator died in a swatting incident in 2020, of all things.

Oh, man. That sucks. I knew about that tragedy[0] but I never read deep enough to realize that Mark Herring (the gentleman who, arguably, was killed in the incident) was the creator of the QWK format.

It was already a horrific story. Now it just feels that much closer to home. Ugh. RIP Mark Herring.

[0] https://en.wikipedia.org/wiki/2020_Tennessee_swatting

ghewgill

OLX (and SLMR) author here. It gives me warm fuzzies to hear about your positive experiences with OLX, after all these years. To this day I maintain that Turbo Vision was peak computer UI, it's been downhill since. :)

EvanAnderson

I loved QWK packets. That saved me a ton of long distance telephone charges. I didn't use OLX ("Silly Little Mail Reader" was my jam) but the concept was wonderful.

wenc

Ah SLMR is OLX.

Mustang Software (Wildcat! BBS) bought Qmodem and SLMR (and renamed the latter to OLX).

ghewgill

SLMR and OLX were by the same author, but OLX was a complete rewrite and didn't look anything like SLMR.

486sx33

Wildcat! Was great

EvanAnderson

Oh, wow. I didn't realize that. Very cool. I used the heck out of it.

At one point I learned about the QWK format and wrote some code to build a QWK packet out of text files. My idea was to distribute an e-zine as a QWK packet. I successfully made QWK packets but never had any actual content to release.

ghaff

Yeah. My primary BBS was relatively nearby in the same state. But in those days intrastate US calls outside of your very local area could actually cost more than interstate.

anthk

I use slrn and mutt with mbsync/msmtp like that, among RSS.

LVB

I love seeing this. I used these tools during my computer-formative years. Now, at 51 with a whole computer career under my belt, I've been thinking a lot about those days. Nostalgia will bias things positively, of course, but I'm look back fondly on how, at least for personal projects, I just did stuff.

At that time, I had no background in "real" CS or best practices. I didn't have the internet advising this way or that, and my only resource was a book or two from B. Dalton. I didn't even really think about good or bad code... merely: does it do the thing I want it to. I just made my programs however I wanted and thoroughly enjoyed it.

Lately, I've wanted to get back to that mode, at least a bit. It is really tough to set aside all of the rigor and analysis I'm accustomed to and just bang something out. Ugly, buggy, happy path only, but at least they exist. Things like Cursor et al. have come along at the right time...

nu11ptr

Super cool. At first I was thinking QModem was the name of an old protocol (like XModem, YModem, ZModem) because it has been so long, but it sounded so familiar. I googled for images and boom - there it is, my childhood. I spent so many hours in this program, and what a great time I had dialing all my local BBSs and downloading all sorts of programs via ZModem on my 14.4K modem. Thank you, Aaron, for making this little piece of my childhood available for inspection and posterity. And may John RIP.

Update: it is also neat it was written in Pascal which was my 2nd language and holds a special place in my heart. I realized early on that BASIC was not ideal for writing professional programs and hadn't yet moved on to C, so Pascal had my attention for a number of years as a teenager.

johntarter

I also completely forgot that Qmodem isn't the protocol but the software. My first PC was an IBM XT 8088 with 20MB HD and 2400 baud modem. Twice as fast as a 1200 baud and the number of floppy disks it could fit in that hard drive!

Now also remembering we could assign macros on Qmodem to function keys. That let us automate playing games like Trade Wars. I'll be honest and say we were using it to also pirate games like Space Quest, Ultima, Leisure Suit Larry.

My lord, where has the time gone since then?

cptskippy

I remember once a month the the ABBL(Atlanta Bulletin Board List) would come out and my father would download and print it at work because we didn't have a printer. He'd come home with a reem of green striped tractor feed paper and I would scour over it transferring annotations from the previous list and making note of new boards to try.

Mountain_Skies

Atlanta during the BBS era must have been paradise. It had the largest local free calling zone of anywhere in the US. Where I lived, the town on the other side of the interstate was in-state long distance, so we were confined to the BBSes in our little suburb plus the nearby "big city" of about 100k people.

Maybe some places like the Bay Area and New York City had more local BBSes but it wouldn't surprise me if Atlanta was in the top five or even the top given the huge free calling zone.

anonzzzies

Wow that is a long time ago. I spent so much time in there. I wrote my own BBS software for the MSX in Pascal before that and got a bit obsessed with cramming features. When my family switched to PC, I believed real programmers, including the author of qmodem, of course, programmed in C. If I had known then it was Pascal, I would've been a lot more sure of my young self that I was on the right track (I was 14 or so).

nu11ptr

I also felt inferior programming in Pascal and believed "real programmers" wrote in C back in the early 90s. I quickly moved on to Turbo C/C++ after only a couple of years writing in Turbo Pascal in my teen years. If there is one thing I have learned in 35 years writing code, it is to ignore tech religion and focus on getting the work done. Some of the biggest feats in software engineering have been done with the fewest resources at their disposal.

zafka

I loved Turbo C/C++!. I still have copies of the directory tree that I would move from computer to computer. It was a simple little sandbox to test things, or to show newbies code. I have an 486 box that still worked last I checked with a bunch of Turbo Pascal and Turbo C code - Almost all of which I would be embarrassed to see the light. I wrote thousands of lines of code before I should be using functions :). I did amuse myself though.

mycall

Anders sure has a great lineage of languages he developed.

hnlmorg

Well said. That’s been one of the biggest lessons I’ve learned over my career too.

EvanAnderson

Aaron - Thank you for putting this code out on Github. It is a fitting tribute to your father's work and his life. I wish you and and your family well.

antirez

A bit less than 30 years ago my friend and I found an IBM AT in the trash, perfect conditions, with even the floppy disks nearby. We connected it with an RS232 cable to a Linux box, and made an IRC workstation using QMODEM, for the girlfriend of my friend. We were connecting via dialups, and the bill every month was high. With Linux NAT, we were already sharing between my and his apartment, using a coaxial cable, and with the IBM AT now we could share the Internet connection to three computers.

yusina

Seeing "internet connection" mentioned in connection with QMODEM is weird. Are you sure you got your story right?

resize2996

My first "real internet connection" (not prodigy or compuserve or local BBS) was connecting to the county library's gopher server via modem (Likely with QModem), navigating out to other gopher servers and then being able to telnet from there.

EvanAnderson

I'm reading it as they used the IBM AT as a serial terminal, running QMODEM as the terminal emulator, for a Linux host that was connected to the Internet via modem.

yusina

Saying "share the internet connection" is quite a stretch though if you just had a terminal connection to some other host which then connected to the internet. I'd associate "sharing a connection" with some (perhaps NATed) IP routing. And they mention NAT, thus my question.

antirez

The clue is in the rs232 mentioned in my comment. Linux is a Unix, even if nobody does it today you can configure an external terminal via serial port and use the system as if you were a user.

The two Linux box were one with the modem and the other via Nat (Ethernet but with old coaxial cables). The AT was just a terminal.

EvanAnderson

Having a serial terminal was just good fun, too, back in the days when having multiple monitors / computers wasn't common. I ran Slackware on a 486 w/ X Windows so I could use Netscape Navigator and I had an old RS-232 dumb terminal from my dad's old computer connected so I could have a shell open w/ an IRC client or my mail while I used Netscape. (I never liked running Pine in an X terminal. It was abnormal and strange. It seemed more natural on the terminal and it was cool to have two screens!)

tom_

qmodem probably makes a perfectly good terminal program. So presumably the 3rd PC gets its internet connection (so to speak) by being a terminal for one of the other 2.

kosolam

Modems were the way to connect to the internet providers so I guess he used QMODEM to dial up.

yusina

That's not at all what QMODEM does.

mrpippy

Original post when John Friel passed away: https://news.ycombinator.com/item?id=42551900

monocasa

John Friel.

I normally wouldn't care about a mistake that'd be corrected when someone clicks through, but I think this is release supposed to be a sort of memorial to his life.

mrpippy

Yikes, my mistake, fixed.

reaperducer

I normally wouldn't care about a mistake that'd be corrected when someone clicks through, but I think this is release supposed to be a sort of memorial to his life.

Plus, AI crawls the world, and if it sees an error enough times, it becomes the truth for millions of people.

codr7

Who will devolve themselves out of history, I say let them.

danielhlockard

Friel, It's no surprise to see you here posting this. This is so cool to see, thank you for preserving this. A fitting tribute.

smashed

That is very cool, had no idea qmodem was built in Pascal at the time.

Thanks to the author for adding a very interesting readme.

I know this is for archiving and historical value, but I'm wondering what kind of license this work would/could fall under?

I see some files have copyright headers from probably long gone companies (upgrade.pas for example).

Also, the readme mentions the original documentation is not included but the src dir does contain a 98kb .HLP file, which I thought was more associated with early windows era software and not common for MS-DOS but someone might want to take a look

breu

This brings back lots of fond memories dialing into The Forbin Project and HITS BBS in the 90s. Met lots of people in the Waterloo/Cedar Falls (319) area and I feel the BBS scene contributed to my eventual major and multiple careers in IT.

And it all started with QModem..

firesteelrain

I forgot most of this but looking into the BBS software at the time, it looks like most of it was based on Pascal. Apparently very popular at the time

spauldo

Pascal was poised to be the de facto language for microcomputers back in the 80s and early 90s. It really could have gone either way.

I'm not sure what tipped the balance to C/C++. Maybe the Microsoft compilers? Maybe the merge of the minicomputer world into microcomputers? Either way, Pascal held on (via Delphi) into the early 2000s.

firesteelrain

2007-2012 I was still writing code in Borland C++ Builder 5 which shared a lot of code libraries with Delphi.

Our microcontroller code was written in Turbo C++

bananaboy

Wow! I never knew of qmodem. I used Telix, maybe Procomm I’m not sure, and finally Terminate. I used Terminate the most. So interesting to see this though and like someone else said I also appreciate any reminiscence from that era.