Execute Brain****/TI-83 BASIC

From Rosetta Code
Execute Brain****/TI-83 BASIC is an implementation of Brainf***. Other implementations of Brainf***.
Execute Brain****/TI-83 BASIC is part of RCBF. You may find other members of RCBF at Category:RCBF.

This implementation (in TI-83 BASIC) has quite a few limitations. Among them:

  • TI-BASIC doesn't have any concept of ASCII, so the . command, which is translated to Disp , outputs everything on a new line as a number. Input is taken whenever a comma is encountered as opposed to being presupplied, and again takes numbers as input. [Attempting to input a string (enclosed in "quotes") will, because of a weird glitch in the interpreter, work without throwing an error: it stores the string to a custom list (yes, a list) named 'V', not the variable V (which remains unaffected). Attempting to access this list throws an ERR:DATA TYPE.]
  • In order to simplify the main loop, all commands are stored to list L1 at the beginning. Lists (arrays) in TI-BASIC can't be more than 999 elements, so attempting to run a program exceeding that size will throw an error (probably INVALID DIM). This can be fixed at the cost of speed and size.
  • Speaking of which: the interpreter is... on the slow side, to put it nicely.

This was made to be compatible with SourceCoder, so the tilde (~) translates to the negative sign (the (-) key) and -> is the arrow on the STO> key.

Input "",Str1               //program input
1->P:DelVar L11->dim(L1     //this is the same as DelVar L1:1->dim(L1 as DelVar doesn't require a colon or newline after its argument
P-(T=1)+(T=2->P             //< and >, respectively
L1(P)-(T=3)+(T=4->L1(P      //- and +
If T=5                      //.
Disp L1(P
If T=6:Then                 //,
Input V
If T=7 and not(L1(P         //[
If T=8 and L1(P:Then        //]