Interpreter IDs?

I’m not sure if this is a question specific to ZIL, or z-machine in general. I’m wondering whether interpreters have a specific ID number that can be measured. For example, in ZIL you check this with <LOWCORE INTID>, but it seems that the only interpreter numbers that are there are the old interpreters, so thing like Parchment have no number, or the number is very high up. Is there a way to find which Interpreter ID is used?

1 Like

I believe modern interpreters generally impersonate one of the old systems, in order to make Infocom game files work (since they check that to decide which features to use). Which makes the interpreter ID value not especially useful these days.


Relying on a specific interpreter is not good. It breaks the modern expectation of platform independence.

From the z-machine standard:

Modern games are strongly discouraged from testing the interpreter number or interpreter version header information for any game-changing behaviour. It is rarely meaningful, and a Standard interpreter provides many better ways to query the interpreter for information.


To be clear, when we say “modern” and “these days”, we mean “since 1991”.


Okay, it’s just a bad idea to do so. Thanks :+1:

1 Like


In fact, looking back on this topic, it seems from my testing that only interpreters that include an INTID above 0 allow z-machine real-time delays (eg. Parchment and Hunky Punk don’t have either, whereas Frotz, Gargoyle and Fabularium have both). None that I’ve checked have one but not the other.
This can be effective when supplying a message (either “Please wait…” or “hit and key…”)

1 Like

Eventually I intend to add support for timers to Parchment/ZVM.

And there’s no need to infer that, timer support is in the header.


That is almost certainly coincidental.