JSFiddle - React, Tailwind, and code Playground
HTML
<textarea onkeyup="f(this.value)" id="c" placeholder="Code"></textarea><br/>
<input type="checkbox" id="b" onchange="f(document.getElementById('c').value)" checked/> <label for="b">Show directions</label><br/>
<input type="checkbox" id="r" onchange="f(document.getElementById('c').value)" checked/> <label for="r">Show results</label><br/>
<pre id="a"></pre>
JavaScript
function f(a){a=a.split("\n");var b=a.map(function(a){return a.length}).sort()[a.length-1];a=a.map(function(a){return a+" ".repeat(b-a.length)});var c=a[0].split("").map(function(c,b){return a.map(function(a){return a[b]}).join("")});a=[a.join(""),a.reverse().join(""),c.join(""),c.reverse().join("")];a=a.concat(a.map(function(a){return a.split("").reverse().join("")}));document.getElementById("a").innerHTML=a.map(function(c,b){return (document.getElementById("b").checked?c+" "+"LLTTRRBB"[b]+"T"+"RRBBLLTT"[b]+"-"+"TBLRBTRL"[b]+"T"+"BTRLTBLR"[b]:c)+(document.getElementById("r").checked?" "+r(c):"");}).join("\n")};
function r(f){function b(){return c.length?c.pop():0}for(var d="",c=[],e=0,g,h,k=0;100>k;k++){switch(f[e]){case "@":return d;case ".":d+=b().toString();break;case ",":d+=String.fromCharCode(b());break;case "#":e++;break;case "$":b();break;case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":case "a":case "b":case "c":case "d":case "e":case "f":c.push(parseInt(f[e],16));break;case "'":c.push(f[++e]);break;case "+":c.push(b()+b());break;case "-":c.push(-(b()-b())); break;case "*":c.push(b()*b());break;case ":":c.push(g=b());c.push(g);break;case "\\":g=b(),h=b(),c.push(g),c.push(h)}e=(e+1)%f.length}return d}
/*
function r(c){
var o = "";
var s = [];
var p = 0, t, u;
function pop() {
if (s.length) return s.pop();
return 0;
}
for (var i = 0; i < 100; i++) {
alert(s);
switch(c[p]){
case "@": return o;
case ".": o += pop().toString(); break;
case ",": o += String.fromCharCode(pop()); break;
case "#": p++; break;
case "$": pop();
case "0": case "1": case "2": case "3": case "4":
case "5": case "6": case "7": case "8": case "9":
case "a": case "b": case "c": case "d": case "e":
case "f": s.push(parseInt(c[p], 16)); break;
case "'": s.push(c[++p]);...