sunset's gemlog

Wordmul: Wordle for Multics

Rather than doing the kernel work I was planning on this weekend, I spent a few quality hours doing a clone of Wordle in Pascal on Multics. It was both

a) surprisingly fun

and

b) a massive pain in the butt.

I learned some valuable things in the process, however. First, I learned that ISO Pascal actually has no primitives for reading of arbitrary files. That strikes me, a self-described Pascal fangirl, as really painful. Thankfully, Multics provides Pascal extensions for runtime access of files, so all was well in the end. I also learned that Multics, while a very clear ancestor of VOS, is less documented, less functional, and less friendly than VOS could dream of being. That being said, by the standards of a late 60s OS - the compare here would be very early TSO or CMS and almost nothing else - it absolutely smells like roses. Its error messages are generally good, it has a real hierarchical FS with stream and record files, and it overall does not suck to use - warts and all. I can see why early UNIX felt like a downgrade. I was vaguely annoyed to find that the Pascal compiler breaks in unintuitive ways with over 1000 locals - something I learned when I tried specifying the valid-words list as a Pascal include file to avoid having to read the documentation on Multics Pascal's file I/O functionality.

Other than the file management issue, there were a couple of surprises I encountered. One is that ReadLn on this Pascal compiler actually can't handle strings - which seems like a huge omission. The fix was painless, but it was still unexpected.

Anyway, the source is below, as is the words list it consumes. Remember to use the -interactive flag when compiling. Shoot me an email at kira@arcanesciences.com if you give it a try~!

The source file

Data file

Here's a sample session:

r 19:45 0.061 0

wordmul
Enter a guess:
?weigh
 w <e> i  g  h       
Enter a guess:
?steam
 s  t <e><a><m>      
Enter a guess:
?marry
<m><a> r  r  y       
Enter a guess:
?lymph
<l> y <m><p> h       
Enter a guess:
?amend
[a][m]<e> n  d       
Enter a guess:
?ample
[a][m][p][l][e]      
Word successfully guessed! Have a nice day~!

To quit before the word is guessed, enter "iquit" as the guess. [] denotes a complete match, <> denotes a partial match. The one major difference from original Wordle is that right now Wordmul uses the allowed-solutions list for both solutions and guesses, whereas the original has a larger list for allowed guesses. It would be trivial to use an expanded guesses list, but transferring large files onto Multics isn't very much fun.