TI-BASIC interpreter for Fishstacks
I was asked by @Timtech to join + post an improvement. Using arrays is a lot easier to understand, and there were so many optimizations that I decided to completely re-write the code. I'm sure it could be improved by other advanced programmers like me, as I'm using several long expressions here... note that L1 represents list #1 (2nd + 1 on the calculator) and ~ is the negative token.

:ClrHome
:Disp "FISHSTACKS IDSP","INTERPRETER
:DelVar IInput Str1
:DelVar L1~{2,2,2,2→L1
:While I&lt;length(Str1
:I+1→I
:sub(Str1,I,1→Str2
:(Str2="I")-(Str2="D
:Ans+L1(4→L1(4
:If Str2="S
:L1(4)²→L1(4
:If Str2="P
:Then
:L1(1
:If 2+Ans
:Disp Ans
:ΔList(cumSum(L1-&gt;L1
:0-&gt;L1(4
:End
:L1(4
:If Ans=256 or Ans&lt;0
:0-&gt;L1(4
:End


Improvements


Saved bytes by removing several unneeded ending parentheses and quotes
Used DelVar since it does not need a following colon
Used an array instead of four variables
Used a complex expression :(Str2="I")-(Str2="D saved to Ans to save space
Used ΔList(cumSum(L1-&gt;L1 to get L1 minus its first element
Several others I'm not listing due to their minisculity; mainly using Ans to save space and speed