Extra data in dictionary: byte 0 & $1 : Verb flag byte 0 & $2 : Meta flag 255 - (byte 1) : Verb number (255 - value is for "traditional Infocom reasons") Grammar table is always located at the start of static memory (address pointed to by word at $0e in header). Word (Verb number) points to the start address for the grammar for a verb. Grammar for a verb: For a detailed description of grammar version 2 (which is what we use), read the text starting with "GV2 is a much more suitable data structure" at https://www.inform-fiction.org/source/tm/TechMan.txt Byte 0: Number of grammar lines for this verb + 1 Byte 1 ... Syntax line 0, 1, ... Grammar line 0: Highbyte of action_value 1: Lowbyte of action_value (action_value & $0400) ~= 0 means the action is reversed action = action_value & $03ff 3 bytes per token: byte 0 & $0f : token_type byte 1 + 2 : Token data If token_type = 15 (ENDIT_TOKEN), this is the end of line, and byte 1 and 2 are not supplied. ILLEGAL_TT = 0; ! Types of grammar token: illegal ELEMENTARY_TT = 1; ! (one of those below) PREPOSITION_TT = 2; ! e.g. 'into' ROUTINE_FILTER_TT = 3; ! e.g. noun=CagedCreature ATTR_FILTER_TT = 4; ! e.g. edible SCOPE_TT = 5; ! e.g. scope=Spells GPR_TT = 6; ! a general parsing routine ENDIT_TOKEN = 15 ALL BELOW THIS LINE IS GRAMMAR VERSION 1, WHICH WE DON'T INTEND TO USE AT ALL ----------------------------------------------------------------------------- Grammar for Quit, grammar version 1: 01 Number of grammar lines 00 params wanted ff token 1 00 token 2 00 token 3 00 token 4 00 token 5 00 token 6 00 action number 02 Grammar line 1, highbyte of action routine bd Grammar line 1, lowbyte of action routine Tokens available in grammar version 1: NOUN_TOKEN = 0; ! The elementary grammar tokens, and HELD_TOKEN = 1; ! the numbers compiled by Inform to MULTI_TOKEN = 2; ! encode them MULTIHELD_TOKEN = 3; MULTIEXCEPT_TOKEN = 4; MULTIINSIDE_TOKEN = 5; CREATURE_TOKEN = 6; SPECIAL_TOKEN = 7; NUMBER_TOKEN = 8; ENDIT_TOKEN = $0f ! Legal, but doesn't seem to be used Token $10-$2f are routine filters (ROUTINE_FILTER_TT). e.g. noun=CagedCreature Token $30-$4f are general parsing routines (GPR_TT). Routine address is in #preactions_table-->(token-48) Token $50-$7f are scope tokens (SCOPE_TT). e.g. scope=Spells Routine address is in #preactions_table-->(token-80) Token $80-$b3 are attribute filters (ATTR_FILTER_TT). e.g. edible Token $b4-$ff are prepositions (PREPOSITION_TT). e.g. 'into' Prepositions are located in the "adjectives table". The start address is in the constant #adjectives_table . Each entry consists of two words. If the second word is the preposition-number (like $ff), the first word is the address of the dictionary word. There is no length number or end marker. You should just expect to find the entry somewhere in there.