In Versions 3 and later, Z-characters 1, 2 and 3 represent abbreviations, sometimes also called
'synonyms' (for traditional reasons): the next Z-character indicates which abbreviation string to
print. If z is the first Z-character (1, 2 or 3) and x the subsequent one, then the interpreter must
look up entry 32(z-1)+x in the abbreviations table and print the string at that word address. In
Version 2, Z-character 1 has this effect (but 2 and 3 do not, so there are only 32 abbreviations).
I am assuming that this is the defined behavior when alphabet A0 is selected. Is there a definition of what happens if the alphabet has been shifted to A1 or A2?
Also, since only 64 abbreviations are allowed by Inform 6, would a 3 code here mean that the selected range was illegal?
I have a pdf that I started a while back if you’re, or anyone else, is interested. There’s a pdf and an odt-file. It probably could use some profreading.
Yes. These codes could have been used for something else when alphabet A1 or A2 are selected. Wasting three codes in A1 and three codes in A2 means a lot of waste.
Coming back to this question, I don’t think I ever discovered what happens in Inform 6 if the abbreviation “bank” code of 2 were to be used. That would imply an abbreviation index number from 64 to 95, which is more than the number of allowed abbreviations. (I think.)
Is this just something that is avoided by the I6 compiler? Is there any reason that the maximum number of abbreviations in Inform 6 couldn’t be expanded to the full number supported by the Z-machine?
Also, FYI to those finding this thread in the future, heasm66’s PDF for ZMS 1.1 has been uploaded to the IF Archive. It’s also linked (to the github source) on the sticky post of I6 resources on the Inform 6 forum here.
And if I’m understanding correctly, pre-6.35 that last bank was reserved for use to store dynamic strings (aka “printing-variables” as described on DM4 p. 30, online section 1.11 DM4 §1: Routines)?