Assigns a value to a variable.
First call GetVar. This returns the address of the variable's value in DE, allocating space for it if it doesn't already exist. | ||||
0502 | CD1B07 | Let | CALL GetVar | |
Check that '=' follows the variable name. | ||||
0505 | CF | RST SyntaxCheck | ||
0506 | 9D | = |
Assigns the result of the BASIC expression at HL to the variable pointed to by DE.
Preserve variable address on stack and get the variable value into FACCUM. | ||||
0507 | D5 | AssignVar | PUSH D | |
0508 | CD8A06 | CALL EvalExpression | ||
Swap (SP) and HL, so HL now holds the address of the variable's value and the program ptr is on the stack. | ||||
050B | E3 | XTHL | ||
Store variable address in PROG_PTR_TEMP, don't know why. | ||||
050C | 225D01 | SHLD PROG_PTR_TEMP | ||
Store FACCUM (the expression result) in the variable and get the variable value address into DE. | ||||
050F | E5 | PUSH H | ||
0510 | CD290A | CALL FCopyToMem | ||
0513 | D1 | POP D | ||
Restore program ptr to HL and return. | ||||
0514 | E1 | POP H | ||
0515 | C9 | RET |