Hence, to run TADS on my Yellow Dog Linux (YDL) machine, I had to download and compile the TADS Version 2.5.5 source code.
Unfortunately, due to some idiosyncracies in YDL, a fix is required. Otherwise you get the error "vocab.c: In function `vocerr_va': vocab.c:603: invalid initializer. make: *** [vocab.o] Error 1".
Thanks to Alan J Rosenthal (and also assistance from Mike Armstrong and Stephen Granade), the following fix works:
Change line 603 of vocab.c, currently
va_list argptr_orig = argptr;to either (1)
va_list argptr_orig; argptr_orig[0] = argptr[0];or (2)
struct __va_list_tag *argptr_orig = argptr;Either (1) or (2) seems to work fine.
After doing the above, go to the "unix" subdirectory of your TADS source code directory, and edit "makefile" as follows: uncomment all the lines under the "Linux 386 with GCC 2.7.2" section, and also change the line
OPTIMIZE=-O2 -funroll-loops -fomit-frame-pointer -m486to simply
OPTIMIZE=Then run "make" from the unix subdirectory, and sit back and wait!
The compiling still gives a number of warnings about pointers etc. But it works! In the end you get the executables "tadsr" (for running TADS games) and "tadsc" (for compiling them).
Then you can play all TADS games, from the amazing Lost New York by Neil deMause, right down to my own much more modest game Galactic Peace. For many more games, see e.g. the official TADS page, or the Interactive Fiction Archive.
As an alternative to the above, I provide here a bare-bones tar file of TADS executables precompiled for YDL (which should also work with LinuxPPC). But it comes with no guarantees!
I have now been in touch with Mike Roberts, the maintainer of the TADS source, and he has indicated that future releases of the TADS source will be ANSI-compliant re va_list, so this problem should disappear then.