TADS 3 interpreter using stdin/stdout (CheapGlk?) on Linux

I’m trying to use zarf’s regtest.py for a TADS 3 game on my Debian Linux system. My understanding is that regtest.py needs an interpreter that uses stdin/stdout for I/O.

My current interpreter is FrobTADS, and from reading the “frob --help” output and a little Google search it doesn’t seem to be possible to switch to stdin/stdout in FrobTADS. I don’t have Gargoyle or QTads on this system, but if either of them has this feature I’m happy to try.

The alternative seems to be just compiling the TADS 3 interpreter with CheapGlk. However the FrobTADS source doesn’t have a separate Makefile for the tads3/ directory. I haven’t poked a lot around this, but if someone has similar experiences of compiling TADS on Linux manually with a different Glk (maybe using the standalone TADS 2/3 porter’s source code distribution?), please give me a pointer to the right direction.

Thanks in advance,

What about “frob -i plain”?

Yes, this is exactly what I want. Don’t know how I missed the “-i” option when reading.


It turns out the “-i plain” mode of FrobTADS doesn’t do exactly what I want. So far the problems I have are (1) FrobTADS still wraps lines in plain interface using word boundaries, instead of sending the whole paragraph as one line to stdout; and (2) the “[More]” prompt after a full page (whatever the definition of a full page is) is still displayed, and FrobTADS waits for input, this really breaks scripted testing.

And it’s a known issue:

I guess I’ll keep looking.

Gargoyle has an ANSI C + Glk port of TADS in its source tree, though it’s only been synced through 3.1.0 / 2.5.15.

Updating it is a matter of unpacking the new source code distribution (carrying forward the handful of garglk changes) and then implementing the VM system functions added in 3.1.1. You could probably stub those out pretty easily if you don’t rely on them in your game.

Once that’s done, it should be straightforward to compile the interpreter and link it with cheapglk instead of garglk.

Thanks Ben. Gargoyle looks huge to me and uses Jam which I’m not familiar at all. But I’ll definitely give it a try when I have time.

Currently I’m using a hacked version of FrobTADS (replacing the tads3/vmconmor.cpp file) for my purpose, and it works for me so far. So this is not that high priority to me anymore.

Plain mode was a low priority in the beginning so it ended up somewhat half-assed. I’ll look into improving it when I find some time.

Similar scenario here. I use frob --character-set utf-8 --no-pause --no-scrolling --interface plain HTH

Sadly, in a bigger project, now I’m experiencing


So I did: a quick-and-very-dirty hack to that file (patch starts @733 in v1.2.3):

[code] /* set MORE mode */
virtual int set_more_state(int state)
int old_state;

     /* remember the old state */
  •    old_state = G_os_moremode;
  •    old_state = FALSE;
       /* set the new mode */
  •    G_os_moremode = state;
  •    G_os_moremode = FALSE;
       /* return the previous state */
       return old_state;

No more more prompts :slight_smile: