Watcom Pro

Yet Another Open Watcom Fork


May 28, 2023. What’s in a name? Why choose the name Watcom Pro? With the focus on 90s programming tech, I thought it was fitting to name the project after several 90s compiler suites. I don’t know which one was the first. There’s MIPSPro from SGI, SUNPro from Sun Microsystems, and even GNUPro from Cygnus. All of these companies, as far as I know, are now defunct; though much of what was done at Sun exists at projects like illumos and of course Oracle. So when I was thinking for something separate from the Open Watcom project proper, but also highly related, I thought of these pro series of compiler suites. There may also be some other pro compiler suites I’m not aware of, and finding out about them from online sources in 2023 is hard. If you, dear reader, know of any others, or even more details of the ones I mentioned above, please head over to the OFTC IRC Network, and join the #watcom channel, to let me know.

 

January 18, 2023. A new website for Open Watcom project has launched, and it’s already hosting a restored backup of the old FTP site.

            For myself, I’m restoring things from backups, and getting my old Watcom adventures back into shape. It’s not fun to deal with a faulty hard disk, and having to restore from backups and reinstall everything. But it’s the world we live in in 2023.


September 26, 2022. I have been digging up some old links for the real reason I decided to get involved with Open Watcom. It has a lot to do with what Anton Ertl wrote about undefined behaviour, compilers and “optimizations” in his paper what every compiler writer should know about programmers. It is available among other things at

 

Resources for Amateur Compiler Writers


and I firmly find myself in the Team-Anton-Ertl among this controversy.  There are more papers and links I have on the subject, but I have not dug up all of them yet, nor have I written down my own thoughts about everything so far. All I can say now, is that I believe I can thank Anton for my interest in fixing up and extending Watcom.


September 21, 2022. Compiler error messages. There are rare things as frustrating as bad compiler error messages. As near as I can tell, the early C compiler(s) by Dennis Richie et al, probably PCC, and others prioritized error messages in the sense it was easy for the compiler maker to do. This caused a lot of incomprehensible error messages to people who did not know how to make or build their own compilers; which describes almost everybody, including people who have taken undergraduate compiler courses. This situation has never really been corrected. Even rustc which is touted as having great and helpful error message devolves into the equivalent of syntax error when the very human mistake of forgetting the fn keyword happens. 1

            Today, this happned to me with MSVC++ 2022.

            I was trying some C++ code — which, for exactly this reason, I don’t really do anymore — and came across this fun error message.

 

hello.cpp(46): error C2059: syntax error: 'constant'


And because I know C++ well enough, I could and did guess correctly what the problem was, but this is the kind of message that is less than helpful. It was originally clang++ that gave me the set of error messages that made me give up on C++ as a human friendly programming language.

            I do not know what I can do, to help fix this for Watcom. All of the compilers are separate projects, and chances are I can only try to fix one of them, but not all. It’s a worthy goal, but the fact remains that human-friendly error messages are essentially unresearched area in compilers, even after roughly fifty years of teaching compiler courses in universities. Don’t believe me? Try forgetting the fn keyword in Rust, and see what happens, and how helpful that is.



September 20, 2022. Getting better at C. There are a myriad of ways to get better at C. The best of course is to use it, write nontrivial projects in it and make the mistakes to correct them. That is how humans learn best, by doing.

            Today I started reading Patterns in C, by Adam Tornhill

and so far I’m impressed. Not so much about the patterns themselves, because as far as I’ve read the book I already know them, but by the explanation of when the patterns are useful, and why. It complements the knowledge I already have in a few subtle ways. I will have to finish the book to write a proper review, though; which hopefully comes not too far in the future.

            For Watcom related adventures, I think I should also mention that the best book I’ve read to explain compiler techniques is Compiler Design in C, by Allen Holub. It’s the best explanation I’ve read on the intricacies of parsing techniques, with concrete examples in C, which — unlike many other compiler books — only describe these things in some abstract fashion. The code generator in the book is nothing to brag about, but it’s good enough to get the basic concepts out.


September 19, 2022. Some days ago, a friend shared coding challenge with a neat xor trick as the solution. I wrote up a simple explanation of why it works. It’s not a formal math proof, but can be used as a sketch for one, if anyone is so inclined.


            Xor Trick to Solve Odd Numbered Integers


September 14, 2022. Watcom Pro has a Gopher server. To access it, I use The Gopher Client Browser for Windows which was last updated in 2019. For something like Gopher, I am not worried about that. The protocol is really old, and in this case, sometimes software can be done. Which seems to be some sort of anathema today, because everyone thinks all the software needs to be updated continuously.

            The Gopher site doesn’t have much of anything yet, and this is because I decided not to duplicate the content here on the website. If you really want to look, you can head over to gopher://watcom.pro/ and read a bare bones readme file.

            In additional news, I have solved the link problem partially in WordPerfect for DOS as you can see. It is an interface problem, and I have found a way to work around it with macros, at least partially. Some further fixing needs to happen before I’m ready to publish that macro.

 

September 13, 2022. Today is coder’s day, the 256th day of the year. After being told this, I wanted to verify it. Of course, being the programmer I am, I decided to use a spreadsheet to verify the claim. I use Quattro Pro 2021 these days. It’s been a long, long time since I was any type of power user of spreadsheets, last time using 1-2-3 in ca. 1994.

            My first attempt at this was using a formula of

 

@CDAYS( @DATE( 22, 1, 1 ), @DATE( 22, 9, 13 ), 1, 1 )


which gave me 255 days. This is correct, because @CDAYS() calculates the difference between two days, I verified that with December 31, 2021, and January 1, 2022. The correct way to calculate it is

 

@CDAYS( @DATE( 21, 12, 31 ), @DATE( 22, 9, 13 ), 1, 1 )


in Quattro Pro, and gives the number 256.

            In LibreOffice Calc, a friend came up with this formula,

 

=FLOOR( NOW() - DATE( YEAR( NOW() ), 1, 0 ) )


which I have not tried myself.

            Happy coder’s day!


September 12, 2022. What’s in a fork? Why a fork and not a continuation of the official Open Watcom project? First of all, I wanted to set up a site quickly and the openwatcom.org domain is missing in action. I’m sure we’ll get it online again.

            Then there’s the issue of my own aims. I want to fix Open Watcom 1.9, and move on from there. When the Open Watcom project was still active, there was a 2.0 branch in the version control system 2, and since the release of 1.9, most commits and changes have happened there. This is also the branch that the current effort on GitHub came out of.

            My own aim is for stability, correctness, and continued support for all major platforms and programming languages; maybe even moreso than the Open Watcom official project ever did. In particular, I care about DOS and Windows 3.1 as first class platforms, and not merely as targets for cross compilation, OS/2, and even the older Win32 platforms as much as it’s meaningful to do so.

            That said, I don’t know how much effort such support will take, and I don’t want to give out meaningless promises. For now, I want to continue creating a production build — a system not just for myself, but for others to use as well — and that’s taking me longer than I expected.


September 9, 2022. Where is Open Watcom? The website is down, so the project must be dead, right? Not so fast. There are now several archives of the most important stuff, the FTP server. Here it is on archive.org

 

http://web.archive.org/web/20220308121739/http://ftp.openwatcom.org/


from March 2022. That’s not so long ago. Then we have our own archives, in no particular order, at

 

http://sininenankka.dy.fi/watcom_mirror/

 

https://fef.net/watcom/


            https://ftp.zx.net.nz/pub/archive/ftp.openwatcom.org/


the last one of which was a complete mirror sometime in 2021.

            These archives are run by people I trust not to be maliciously changed, but there is always a chance of some bitrot here and there.

            Apologies for the lack of clickable links. I’m still using WordPerfect for DOS to write this diary, and haven’t solved hyperlinks yet.

            Here on Watcom.pro, I have also set up a long term mirror for it, but it’s not public as I write this. I used spinning rust to set up a mirrored ZFS pool, so bitrot should not be a concern. I have yet to configure periodic scrubbing of the pool, to make sure it stays healthy for the long term, but the basics are in place. This archive is a mirror of ftp.zx.net.nz, which has a checksummed fs, and since there were no reading errors making the copy with rsync, I can be reasonably sure there has been no bit rot since the archive was taken from ftp.openwatcom.org.

            There is still a chance something has gotten corrupt on the original, the archives are now up to twenty years old, and I have no idea what hardware, nor checksums, nor anything was done in the past.


September 8, 2022. Another day, another entry. I have now learned to get WordPerfect for DOS to set the html document title, what goes into the tab or window title on many browsers. I do this by setting the descriptive name in the summary.

summary.gif

As you can see, I am still learning how to properly include screenshots in my WordPerfect for DOS in a way that makes sense for html export later. I still don’t have the complete handle on it, but I think I’m getting there. I still don’t know if I can make WordPerfect 2021 not rescale the image, or if that’s a factor of how I use Presentations to save it in the first place. In any case, this is good enough for now.

            About Watcom itself, there is still an official Open Watcom project, except the website is currently down. We the people behind it communicate on IRC, but the website administrator is currently busy with life. It happens. We are working on resurrecting the website, and have two potential hosts up and running, but it’ll take some effort to get archives copied and the DNS settings changed.

            On the source code front itself, we are working on migration and hosting with git instead of Perforce. Most of that migration work is already done, but there can still be some snags to work out.

            There are currently two ways to contact us, Discord — which is neutral — and IRC — which is more official — with details in the table below. As it happens, I am still learning to make hyperlinks in WordPerfect for DOS, so the Discord invitation is not clickable. Please forgive that. The major way to contact the Open Watcom team itself is on IRC. Keep that in mind if you join the Discord server.


Discord

IRC

https://discord.gg/pqFcGfzZjj

Server: irc.oftc.net

Channel: #watcom



September 7, 2022. Hello, world. This document is being written in WordPerfect 6.2 for DOS. Because I can. Then I use WordPerfect 2021 to open and publish as a html file, and upload to the server. It’s not perfect, but it’s better than many other methods I could use to create this initial website.

            Here is the start of the Watcom Pro website, a place for an upcoming bugfix release of Open Watcom 1.9. Right now, the website is more or less done for the time being, and I’ll continue my work on creating a production release for 1.9. That is, using my own build of the stock 1.9 sources, with help files and installers and everything. This is taking longer than I expected because the method I wanted to use to run wgml.exe is problematic. I thought it would be an easy fix, and it was, but then another and more insidious problem surfaced. I am currently working on it.

Footnotes