Z-machine 1.1 specification -- clarifications sought

In the 1.1 standard, for the 0OP items save and restore (http://inform-fiction.org/zmachine/standards/z1point1/sect14.html#0OP), the V4 versions are listed as returning a result but lack an asterisk in the St field. Should the asterisks be there, or do those opcodes not return a result?

[Edit] Some further questions about the opcodes:

It appears the asterisk is just missing.

Well, all variants work in Frotz and Infocom’s DOS terp, and it doesn’t seem sensible to make them illegal. I think this is just the spec trying to say ‘the branch information is an operand, not normal branch data’.


The routine argument is illegal before V5. Splitting the table entry would probably be clearer.




I will try to add these changes into the specs soonish. I’ve been slacking a bit on the whole thing, really.

Thanks a lot for the response – it is appreciated!

(I’m playing around with an implementation, as you’d have gathered, and so naturally parts where the specification is erratic are standing out to me right now.)

I have some errata for the descriptions of save and restore:

It seems to me that this should be:

Likewise, restore:

Should be:

A few more errata.

The description of the je instruction:

Should be:

The description for jin:

Should be:

If I’m reading right, the implication is that the instruction itself only takes two operands? If so, that’s not the case: there are many instances of @je taking more than two operands. For example, address 0xcfd7 of A Mind Forever Voyaging (77-850814):

c1 95 86 35 39 38 c6    JE              G76,#35,#39,#38 [TRUE] cfe2

2OP doesn’t quite mean two operands, but only for @je as far as I know.

All 2OP instructions can be encoded as VAR instructions because the 2OP format doesn’t allow for 16bit constants.

ARGH, I totally missed that. I have been eaten by a grue.