It’s amazing how quickly things become useless and outdated on the Internet. What is worse is people usually choose one of the first five search results and consider it Gospel no matter how horribly out of date it is. Recently I got a bit nostalgic for some of the DOS work I used to do. Greenleaf libraries were a mainstay in my development tool chest no matter what compiler I was using.
There CommLib product was awesome. Data Windows provided a rather great ASCII graphics mouse enabled user interface. The Greenleaf Database library was also quite a treasure. I never owned a copy of their Functions or Super Functions products. Part of me wonders if that isn’t what morphed into the Boost library or at least the inspiration behind it.
Kids today don’t understand. They come to C/C++ with quite an arsenal of string, date, and time functions. It wasn’t always so. In the early days we were all rolling our own. Part of it was ego, but the major part was compiler vendors didn’t provide much in the way of support and there was no standard. You also aren’t old enough to remember when Janet Reno, with Hillary Clinton whispering in her ear, committed a crime against the human species not putting Bill Gates in prison AND allowing Microsoft to trademark Windows in the software world DESPITE numerous DOS based windowing libraries predating the Microsoft claim.
The result of this was Microsoft’s lawyers sending threatening letters to each and every software vendor with “Window” or “Windows” in their product name even when that product existed years before Microsoft shipped Windows. Most of these companies were small so the threat of an 800-pound gorilla was enough to get them to pull the product. I don’t know of one which renamed their product and kept going. I don’t believe this round of Microsoft criminal activity allowed for that option.
These threats went deep. Like Jihadists trying to purge all historical artifacts which disprove their claim, the legal threats and historical destruction ran amuck with the blessings of both the Clinton’s and Janet reno.
I clicked on some of those Dr. Dobb links and they don’t work anymore. The Dr. Dobb’s site still exists and is being archived for posterity, but those links don’t work. It appears that only Google’s blatant for profit copyright infringement has thus far escaped the purge of the Microsoft lawyers.
I clicked on some of those books.google.com links and they worked. That EDM2 link worked as well. There they flag all GreenLeaf products as “discontinued.” That’s been both true and false over the years. Greenleaf folded up, for a few years, then, some other shop began selling at least the database library and perhaps a few others. Then I lost track of it.
Part of this mental journey came from wondering if any of the Functions or Super Functions would still serve a purpose today as well as very fond memories of CommLib, having exchanged many emails with Mark, Ruby and I believe someone named Billy back in the day. Putting it mildly, I was probably viewed as a support nightmare. I was replacing burnt EPROM embedded systems with cast-off PCs running DOS so I was pushing the libraries. I was also using the much stricter Watcom and they were using the rather lax Borland.
While, technically, CommLib is “discontinued,” I happily found Mark Nelson’s “Dr. Dobb’s” article about “Any Serial Port.” At some point I know I’m going to find myself on an embedded Linux project which isn’t using Qt and I will be more than willing to take a serious look at what the project has to offer.
If submitting stuff to the Qt project wasn’t such a royal pain in the ass, I might even be willing to hack the QSerialPort class to give it the features everyone needs. Features CommLib had back in the days of DOS. A double ring buffer which understands the concept of a record, be it a fixed length record, or one bounded by begin and end characters. Doesn’t matter if you are reading from a truck scale or some other source, everyone needs that.
Hey, while I’m on the topic, I certainly hope vendors of truck scales have finally stopped several bad practices. CommLib, at the time, didn’t recognize multiple character begin and end markers. Scale vendors would do one of two thing:
- Put the CRC byte in front of the ending byte without restricting the range of CRC values so it could have the same value as the ending marker.
- Put the CRC byte after the ending marker so your “record” logic couldn’t retrieve everything it needed to process the read without doing an extra one-byte read.
For those of you who don’t think it is a problem, try, within the limits of 16-bit DOS, the configuration information for 7 different scale brands, each one of which uses a different packet format, baud and frequency rate. Any one of these scales can be on any port.
Damn! I was a geek back then.
I do hope the Greenleaf crew has prospered in their lives after Greenleaf. I have fond memories of all the misspent hours in front of my AST Premium 286 putting their products to work.
Information, like youth, really does expire faster than milk.