COMMANDS

`X` | Push x-coordinate value of the current cell to the data stack. The cells on the leftmost edge of the canvas have 0 as their x-coordinate values. The cells on the rightmost edge of the canvas have 255 as their x-coordinate values.
`Y` | Push y-coordinate value of the current cell to the data stack. The cells on the bottommost edge of the canvas have 0 as their y-coordinate values. The cells on the topmost edge of the canvas have 255 as their y-coordinate values.
`T` | Push t-value of the current iteration of evaluation to the data stack. Any code containing this command is rendered in 256 iterations where t takes integer values from 0 to 255.
`N` | Push 0 to the data stack.
`0`-`9` | Multiply the value at the top of the stack with 10 and add the given number to it. In other words, append digit to the value at the top of the data stack. For example, if the value at the top of the stack is 20, then the command `3` changes that value to 203.
`+` | Pop two values from the data stack and push their sum to the data stack.
`-` | Pop two values from the data stack. Then subtract the value popped first from the value popped second and push the result to the data stack.
`*` | Pop two values from the data stack and push their product.
`/` | Pop two values from the data stack. Then use the value popped first to divide the value popped second, discard fractional part from the result and push the integer result to the data stack.
`%` | Pop two values from the data stack. Then use the value popped first to divide the value popped second, obtain a nonnegative remainder and push the remainder to the data stack.
`=` | Pop two values from the data stack. If they are equal, push 1 to the data stack. Otherwise push 0.
`<` | Pop two values from the data stack. If the value popped second is less than the value popped first, push 1 to the data stack. Otherwise push 0.
`>` | Pop two values from the data stack. If the value popped second is greater than the value popped first, push 1 to the data stack. Otherwise push 0.
`!` | If the value at the top of the data stack is 0, change it to 1. Otherwise change it to 0.
`^` | Pop two values from the data stack, perform bitwise XOR operation on the values and push the result to the data stack.
`&` | Pop two values from the data stack, perform bitwise AND operation on the values and push the result to the data stack.
`|` | Pop two values from the data stack, perform bitwise OR operation on the values and push the result to the data stack.
`C` | Clip the value at the top of the data stack to the range 0-255, i.e. set it to 0 if it is less than 0 and to 255 if it is greater than 255.
`D` | Duplicate the value at the top of the data stack by pushing a copy of it.
`P` | Pop one value from the data stack.
`S` | Swap the two values at the top of the data stack.
`R` | Rotate the three values at the top of the data stack. The third value from the top of the stack is brought to top. The value at the top of the stack moves to the second place from the top. The value at the second place from the top moves to the third place from the top.
`[` | Pop one value from the data stack and begin loop with the popped value as the loop counter. All code from the command after the opening `[` up to the corresponding `]` forms the body of the loop. If the loop counter is positive, enter the loop body. Otherwise skip the loop. The loop counter is maintained in the loop control stack which cannot be accessed directly by the programmer.
`]` | Decrement the loop counter. If the counter is still positive, jump back to the beginning of the loop body of the current loop. Otherwise exit the loop. The loop counter is removed from the loop control stack while exiting the loop.
`W` | Display current coordinate and stack in the status panel and halt. The stack is printed from bottom to top.
`F` | Pop one value from the top of the stack and set the frame interval to that many number of milliseconds. The default frame interval is 100 ms.
`M` | Increment mode number. The default mode number is 0. In mode 0, division by zero leads to an error. In mode 1, division by zero leads to a black cell. In mode 2, division by zero leads to a red cell. It is an error to increment mode value beyond 2.

MORE

- Documentation: github.com/susam/fxyt

- Built-in demos: #1, #2, #3, #4, #5

- Community demos: susam.github.io/fxyt/demo.html