As we’re trying to make sure PunyInform games run well on Infocom’s original interpreters for 8-bit computers, we run into some sursprises where those terps don’t adhere to the Z-machine standard.
Is there an easy way to list exactly what parts of the Z-machine standard one can not expect Infocom’s interpreters to follow?
I’ll give two examples:
According to the standard, it’s legal to call a routine with more arguments than the routine has local variables, and the extra arguments will just be thrown away. In many Infocom interpreters, on quite different platforms, extra arguments will instead change the value of local variables in the current routine, leading to all sorts of trouble.
According to the standard, output stream 3 (printing to memory instead of the scree) is supported in v3. In many Infocom interpreters, this doesn’t work at all - the text appears on screen and not in memory.