Beyond Zork, Tandy, and colors

Does anybody know anything at all about Infocom’s Tandy interpreter? I discovered something rather interesting today when you tell Beyond Zork that you’re running on a Tandy (interpreter number 11). Try typing “color” at the prompt; for a few interpreters it cycles through 4 or 6 color schemes. For the Tandy, it cycles through 518. The interesting bit is the values passed to @set_colour. It’s called with values such as 43, 224, 67, 72, etc etc etc. Lots of “illegal”, as far as the standard is concerned, color values.

This is, of course, not an especially pressing concern. But I haven’t been able to find any information at all on this and was hoping someone could shed a little light.

I’m sure this riveting topic has been burning in everybody’s minds, so you should be glad to learn that (I think) I’ve come up with an answer.

Beyond Zork happily accepts any interpreter number you throw at it: it will believe you when you tell it that you’re interpreter number 100, for example. This is an issue in the “color” routine because the game indexes an array (of pointers to color palette tables) with the interpreter number. According to Wikipedia, BZ was never released for the Tandy, so presumably it assumed the Tandy interpreter number would never be set; since the Tandy number is the highest, there was no need to add an entry for it at the end of the array meaning “no colors available on this platform” like it has for some others. Instead, there is junk (well, data for something else) at the “Tandy location” that happens to point to an area that says there are 518 color palettes available.

So don’t set your interpreters to Tandy when running Beyond Zork; the wrong color data will be accessed. Crisis averted.