They expanded the variable table. Each entry starts with a type byte
followed immediately by the full variable name.
This is based on an analysis of the Microsoft BASIC-80 5.2 source code
found here. The core of the interpreter is BINTRP.MAC,
which has most of the definitions used here. This includes NAMCNT
(one byte) and NAMBUF (NAMLEN - 2 bytes), which are pre-allocated
storage for a copy of a variable name read from the program text, and
VARTAB, a pointer to the start of the area (immediately after the
program text, I believe) that stores the current list of variable
names and values when running.
The routine I looked at was PTRGET in BIPTRG.MAC, which reads a
variable name at the current text position pointed to by HL and
stores a pointer to its value in the location pointed to by DE.
The core of the variable name search is LOPTOP, which is entered with
BC containing the first two chars of the variable name, DE pointing
into VARTAB and storage NAMCNT and NAMBUF containing the name length
count and chars beyond the first two.
LOPTOP compares the first char of the variable name (in C) with
the first char of the name in VARTAB, then compares the variable
type, then the second char of the name (in D). I'm guessing that
this was the original full comparision routine in earlier versions of
BASIC. If all of these match, it continues on with FINPTR, which
compares the remaining name chars in NAMBUF with the rest of the
name in VARTAB.
Postscript: I've found a disassembly of Altair Basic 3.2.
The symbol names are different for obvious reasons, but its routine
[GetVar] is clearly the PTRGET routine above. The start of it is
almost identical, the main differences being that "read next char" is
a routine called with RST rather than a MOV C,M and that the first
and second characters are in B and C rather than vice versa. There
are larger differences in the specific code for LOPTOP (called
FindVarLoop in the disassembly), some related to the simplified
variable storage (here called VAR_BASE), but the
overall structure is clearly the same. The memory arrangement
overview is helpful reading before diving into either
this or the 5.2 source code.