A recusrcript program consists of two lists, one with values and one with tokens. There is only one data type in recurscript, as it inherits Scratch's number/string duality. You can control the flow of the program in two ways: goto (it's a LOW-level program, don't complain - it isn't meant for handwriting anyway) and user-defined functions/return statements. This is the biggest feature of recurscript - unified libraries and built-in recursion that works fast. How does recurscript WORK? There are ATOMS, which are actual Scratch scripts with a broadcast hat. For example, math.add adds the ability to perform the adding operation over inputs. Atoms get inputs through the args global list and modify the global var return to specify an output. Atoms are called like that because they really are basic - do not try to mess with the execution engine or use recursion inside atoms - it's not gonna end well. Functions in recurscript are always pure script. One important thing to understand about them is that technically, you are running the same part of the code while switching levels. There is no limitation of switching back and forth between any place in the code without use of function calls - the barriers between functions are only virtual. (Then again, it is not meant as a language where you actually code something. It's not even Assembly) token | data ______________________________________________ h | header - indicates start of code (kind of a main() function) a/f | atom name/function line t | target - a number that points to avariable where the output should be stored. (Technically, you can use 0, -1 or any string to direct the output into space. The Use of 'Null' is preferred) (c | optional comment, ignored anywhere but first line) arguments: (any number of the following) d | a value (anything that shouldn't be evaluated) v | a variable - the value is the index of the var (1-10 is reserved for arguments, 11+ is for variables added by core.addvars) And then a/f continues.... args is reserved for atoms only! functions should use variables 1-10