[HN Gopher] QModem 4.51 Source Code
       ___________________________________________________________________
        
       QModem 4.51 Source Code
        
       Author : AaronFriel
       Score  : 141 points
       Date   : 2025-05-03 15:30 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | nu11ptr wrote:
       | 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.
        
         | cptskippy wrote:
         | 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.
        
         | johntarter wrote:
         | 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?
        
       | mrpippy wrote:
       | Original post when John Friel passed away:
       | https://news.ycombinator.com/item?id=42551900
        
         | monocasa wrote:
         | 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.
        
           | reaperducer wrote:
           | _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 wrote:
             | Who will devolve themselves out of history, I say let them.
        
               | monocasa wrote:
               | A true gradient descent into the trash can.
        
           | mrpippy wrote:
           | Yikes, my mistake, fixed.
        
       | smashed wrote:
       | 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
        
       | 486sx33 wrote:
       | Batch upload Phone book Mini bbs server Later Windows Scripts
       | Terminal window Graphics
       | 
       | Great memories !
        
       | paulryanrogers wrote:
       | Gives me waves of nostalgia. I settled on Telix, but recall using
       | Qmodem from time to time. These were essential tools to
       | connecting to the outside world for us nerdy teens in the early
       | 90s.
        
         | mycall wrote:
         | Same here, Telix was the best for its time. Procomm and Qmodem
         | were top tier as well.
        
       | EvanAnderson wrote:
       | 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.
        
       | LVB wrote:
       | 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...
        
       | antirez wrote:
       | 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 wrote:
         | Seeing "internet connection" mentioned in connection with
         | QMODEM is weird. Are you sure you got your story right?
        
           | kosolam wrote:
           | Modems were the way to connect to the internet providers so I
           | guess he used QMODEM to dial up.
        
             | yusina wrote:
             | That's not at all what QMODEM does.
        
               | grgbrn wrote:
               | That's precisely what QMODEM does? What do _you_ think it
               | does?
        
           | tom_ wrote:
           | 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.
        
           | EvanAnderson wrote:
           | 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 wrote:
             | 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.
        
               | grgbrn wrote:
               | Maybe your association would be different / the
               | terminology would make more sense if you were online in
               | the early 90s?
               | 
               | BUT, it was definitely possible to do what you're
               | describing with some combination of a dialup shell
               | account, a terminal program like qmodem and something
               | like https://en.wikipedia.org/wiki/Slirp
        
               | EvanAnderson wrote:
               | I think running SLiRP on the Linux box and a SLIP client
               | on the IBM AT was probably a stretch, but it's certainly
               | possible. At that point it probably would have made more
               | sense to grab an NE2000 NIC and throw the IBM AT onto the
               | coax network.
        
               | grgbrn wrote:
               | Oh I wasn't trying to reverse-engineer his network from
               | that comment, just saying that this was a thing that was
               | possible and that people did at the time.
               | 
               | I agree it's highly unlikely that the AT was running
               | slirp. Wikipedia says an AT was a 286, so it wouldn't
               | have been linux. Not even sure what the options would
               | have been. Minix? Xenix?
        
               | EvanAnderson wrote:
               | Based on their mention of "coax" I bet they have a Linux
               | box w/ a modem doing dial-up PPP to an ISP, and a
               | 10Base-2 NIC that they used to attach another PC. The
               | Linux box was doing IP masquerading (NAT) to share the
               | PPP connection w/ the machine(s) on the 10Base-2 LAN.
               | 
               | Having the IBM AT a a serial terminal would let somebody
               | run CLI-based software on the Linux box (like Lynx, an
               | IRC client, FTP, etc). You'd just be using a shell
               | account on the Linux box.
               | 
               | I did stuff like this in the early 90s at home and later
               | at a company I worked at (sharing a single dial-up
               | connection over 10Base-2 with 5-ish Windows 95 PCs).
        
           | resize2996 wrote:
           | 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.
        
           | antirez wrote:
           | 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 wrote:
             | 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!)
        
       | anonzzzies wrote:
       | 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 wrote:
         | 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.
        
           | hnlmorg wrote:
           | Well said. That's been one of the biggest lessons I've
           | learned over my career too.
        
           | zafka wrote:
           | 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 wrote:
           | Anders sure has a great lineage of languages he developed.
        
       | f1shy wrote:
       | Beautiful code in a beautiful language. Very nice to see this.
        
       | ck2 wrote:
       | Ha my instant memory just seeing the word "qmodem" goes back so
       | many decades?
       | 
       | If Zmodem isn't available, choose Qmodem because Xmodem is slow
       | as heck with ack after each packet
       | 
       | I'm sure someone has a simulator around the web somewhere but not
       | quite that nostalgic
        
         | sedatk wrote:
         | You're probably thinking of YModem.
        
       | wenc wrote:
       | 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.
        
         | EvanAnderson wrote:
         | 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 wrote:
           | Ah SLMR is OLX.
           | 
           | Mustang Software (Wildcat! BBS) bought Qmodem and SLMR (and
           | renamed the latter to OLX).
        
             | EvanAnderson wrote:
             | 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.
        
         | anthk wrote:
         | I use slrn and mutt with mbsync/msmtp like that, among RSS.
        
         | atombender wrote:
         | 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 wrote:
           | > 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
        
       | snvzz wrote:
       | Without a license, it's sadly not possible to continue to
       | maintain the code, or even e.g. package it as part of freedos.
        
         | sgt wrote:
         | I'm sure his son can legally apply a license to that work.
        
       | firesteelrain wrote:
       | 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
        
       ___________________________________________________________________
       (page generated 2025-05-03 23:00 UTC)