# RunR

RunR is an esoteric programming language by User:David.werecat that works in a two dimensional space known as "The Grid".

## Instructions

Instruction Description
`S` The start of the program
`I` An input generator, when hit it reads a value from the input and stores in the current number
`O` An output device, when hit it writes the current number to the output
`F` The end of the program
`^` A stack action, pushes the current number into the stack
`v` A stack action, pops a value from the stack and stores it in the current number
`A` A valutory operator, adds the current number and the next value in the stack and stores it in the current number
`U` A valutory operator, subtracts the current number and the next value in the stack and stores it in the current number
`M` A valutory operator, multiplies the current number and the next value in the stack and stores it in the current number
`D` A valutory operator, divides the current number and the next value in the stack and stores it in the current number
`0` to `9` Predefinitions, sets the current number to the given value
`%` A modular selector, if the current number is zero, sets the current value to true, otherwise sets the current value to false
`\$` A matrix retriever, it pops a value from the matrix stack and stores it in the current number
`&` A matrix signaler, it pushes the current number into the matrix stack
`(` and `)` Focusers, the unconditionally redirect moment to the direction that they are pointing
`/` and `\` Reflectors
`-` and `|` Walls, when hit from the side no reflection occurs
`+` A multidirectional wall, causes a reflection from any direction
`#` A conditional gate, when the current value is false, reflection occurs
`!` A negatory operator, performs not on the current value
`T` A value field, sets the current value to true
`@` A conditional jump, when the current value is true, the next instruction is skipped
`<` A left turntable, it rotates movement left by 90 degrees
`>` A right turntable, it rotates movement right by 90 degrees
`~` A rest zone, it causes a brief pause in the program
`*` A audial trap, it causes a beep to sound

When the current number goes below 0 or above 255, it simply stops at the high value. Spaces are NOPs. Any other characters results in an error.

## Examples

### Hello, World!

```  S9^A^A^&AO^\
/OAAv^M3^9^2^/
\^7AOO^\>\$UOF
/   OA3/^
\\$^&8AO\3
/OU&\$^4/O
\7^8AAO\A
/&AA^6^/1
\^6^AAO\^
/&\$OA3^/\$
\^9AO   <
```