diff --git a/bmin.ul b/bmin.ul new file mode 100644 index 0000000..0f8022e --- /dev/null +++ b/bmin.ul @@ -0,0 +1,50 @@ +str code = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."; +byte[10000] memory; + +nat mp = 0; // memory pointer +nat ip = 0; // instruction pointer + +while (ip < code.length) { + if (code[ip] == '>') { + mp = mp + 1; + } else if (code[ip] == '<') { + mp = mp - 1; + } else if (code[ip] == '+') { + memory[mp] = memory[mp] + 1; + } else if (code[ip] == '-') { + memory[mp] = memory[mp] - 1; + } else if (code[ip] == '.') { + // console.write = memory[mp]; + write = memory[mp]; + } else if (code[ip] == ',') { + // memory[mp] = console.read; + memory[mp] = read; + } else if (code[ip] == '[') { + if(!memory[mp]) { + nat nc = 1; + while (nc > 0) { + ip = ip + 1; + if (code[ip] == '[') { + nc = nc + 1; + } else if (code[ip] == ']') { + nc = nc - 1; + } + } + } + } else if (code[ip] == ']') { + if (memory[mp]) { + nat nc = 1; + while (nc > 0) { + ip = ip - 1; + if (code[ip] == ']') { + nc = nc + 1; + } else if (code[ip] == '[') { + nc = nc - 1; + } + } + } + } + ip = ip + 1; +} + +halt;