Infidel simulates a vast empty desert with a special room called ENDLESS‑DESERT that represents every unmapped location; when the player drops items there, the game stores their coordinates and object IDs in an array named DESERT‑TABLE so they can be restored if the player returns to the same spot. The DESERT‑TO‑TABLE routine performs this shuffle, looping through all portable objects in the endless desert and writing each object’s ID and its SLOC coordinate into the table. (Source: primary).

The bug lies in how the ZIL compiler handles the routine’s optional TBL argument, which should default to the address of DESERT‑TABLE. Instead, the compiler stored the constant value 30—the index number of the global DESERT‑TABLE variable—into TBL at routine start. Consequently, when DESERT‑TO‑TABLE writes object data, it writes to memory addresses beginning at 30 rather than the intended address 11129, creating a wild pointer that corrupts low memory. (Source: primary).

Because the first 64 bytes of Z‑machine version 3 memory hold header data, addresses 30‑63 are unused, but address 64 begins the abbreviations table used for text compression. Dropping nine or more objects in the endless desert overwrites the start of that table, causing the first abbreviation (“the”) to be replaced by whatever byte pattern happens to be written—observed as the word “You” appearing in place of “the” in game output. In some cases the corruption drives the print routine into an infinite loop, crashing the interpreter. The bug went unnoticed because few players ever dropped more than eight objects in the barren endless desert, leaving the memory corruption undiscovered for years. (Source: primary).

A similar defect exists in the paired TABLE‑TO‑DESERT routine, which reads from the same wrong address, and the PROP‑TO‑TBL / TBL‑TO‑PROP pair shares the same pattern with the PROP‑TBL table. Fixing the issue requires either removing the default for TBL and inserting <SET TBL ,DESERT‑TABLE> at the routine’s start or passing DESERT‑TABLE explicitly as a second argument. (Source: primary).