This project implements a universal Turing machine using no lists, no variables*, no strings, and numbers limited to integers 0-5** -- instead, most of the data storage is done by taking advantage of concurrent scripts to turn call stacks into data stacks. Pushing a value means calling a custom block with that value as an argument, and popping a value means returning from a call. * Unless you count built-in "variables" like direction ** Aside from x position, which is used for rendering The project will generate a random initial tape; once it's done, click the stage or press space to run the Turing machine. You can also press M to step, or use the arrow keys to move the tape head and press C, D, B, and G to write symbols. NOTE: I have not confirmed this but it's likely that pressing keys too quickly could lead to errors (but you should be good as long as don't press anything before the change gets rendered)
The Turing machine implemented here is the 6-state 4-symbol UTM described by Neary and Woods