460 FOR C=1 TO LEN(T$):REM For each char in expression
470 C$=MID$(T$,C,1)
475 IF C$=BL$ THEN GOTO 570
480 GOSUB 5000: REM GET CHARACTER TYPE (TP$)
485 IF TP$="Bad character" THEN ME$=TP$:GOTO 300
486 IF TP$<>"NUMERIC" AND N$="VAL" THEN N$="NOTVAL"
490 IF TP$="OPERATOR" AND IN$="ID" AND C$<>"=" THEN ID$=I$(I):GOSUB 1400:I$(I)=RIGHT$(STR$(NU),LEN(STR$(NU))-1):IF ME$<>NU$ THEN GOTO 300
491 IF TP$="OPERATOR" AND IN$="ID" THEN IN$="NOTID":GOTO 508
493 IF TP$="NUMERIC" AND N$="VAL" THEN GOTO 570
499 IF TP$="ALPHA" AND IN$="NOTID" THEN I=I+1:I$(I)=C$:IN$="ID":GOTO 570
502 IF TP$<>"OPERATOR" AND IN$="ID" THEN I$(I)=I$(I)+C$:GOTO 570
505 IF TP$="NUMERIC" AND N$="NOTVAL" THEN I=I+1:I$(I)=RIGHT$(STR$(VAL(RIGHT$(T$,LEN(T$)-C+1))),LEN(STR$(VAL(RIGHT$(T$,LEN(T$)-C+1))))-1):N$="VAL":GOTO 570
508 IF TP$="OPERATOR" THEN I=I+1:I$(I)=C$:GOTO 570
570 NEXT
580 IF IN$="ID" AND I>1 THEN ID$=I$(I):GOSUB 1400:I$(I)=RIGHT$(STR$(NU),LEN(STR$(NU))-1):IF ME$<>NU$ THEN GOTO 300
599 REM *******************************************
600 REM INTERPRET EXPRESSION
610 REM IMPORT: I$(I)
611 REM
612 IF I=0 THEN GOTO 300
613 LW$=I$(1):GOSUB 900:I1$=UP$
615 C$=LEFT$(I$(1),1):GOSUB 5000
617 IF TP$="NUMERIC" AND I$(2)="=" THEN ME$="Can't assign a value to a number":GOTO 300
620 IF I$(2)="=" AND I>=2 THEN GOSUB 1500:GOTO 300
621 IF I1$="HELP" THEN GOSUB 6000:GOTO 300 REM LIST COMMANDS
623 IF I1$="LIST" THEN GOSUB 1600:GOTO 300 REM LIST VARIABLE VALUES
625 IF I1$="CLEAR" THEN L3=0:FOR N=1 TO MV:N$(N)=NU$:NEXT:GOTO 300
630 IF I1$="PON" THEN OU=PR:GOTO 300:REM Output to printer
640 IF I1$="POFF" THEN OU=SC:GOTO 300
650 IF I1$="EXAMPLES1" THEN RESTORE:PRINT CL$:FOR X=1 TO 11:READ X$:PRINT X$:NEXT:GOTO 300
660 IF I1$="EXAMPLES2" THEN RESTORE:PRINT CL$:FOR X=1 TO 11:READ X$:NEXT:FOR X=12 TO 23:READ X$:PRINT X$:NEXT:GOTO 300
670 IF I=1 THEN ID$=I$(1):GOSUB 1400:IF ME$=NU$ THEN GOTO 690
671 IF ME$<>NU$ THEN GOTO 300
680 IB=1:GOSUB 1009: REM Default: evaluate expression