-as consisting of one or more of these definitions. Definitions,
-properties, flags, and instructions include brackets which must be
-correctly paired and nested.
+as consisting of two or more of these definitions. At a minimum, a
+program must define which version it is to be compiled for and contain
+at least one routine named GO from which execution begins.
+Definitions, properties, flags, and instructions include brackets
+which must be correctly paired and nested.
+
+## Z-machine versions
+Infocom made 6 versions of the Z-machine. The community made 2 more,
+for a total of 8, mostly to support larger story files. To define
+which version of the Z-machine a program is to be compiled for, it
+must contain a VERSION definition at the top level, outside any other
+definitions, in the following format, using this BNF-style syntax:
+
+ <version-definition> ::= "<" "VERSION" <version-number> ">"
+
+ <version-number> ::= "ZIP" | "EZIP" | "XZIP" | "YZIP" | "1" | "2"
+ | "3" | "4" | "5" | "6" | "7" | "8"
+
+ZIP is equivalent to version 3, EZIP to version 4, XZIP to version 5,
+and YZIP to version 6.