proc exec code$ . . len mem[] 100 dp = 1 code$[] = strchars code$ ip = 1 while ip <= len code$[] if dp > len mem[] len mem[] len mem[] + 100 . if dp < 1 print "programm error" return . c$ = code$[ip] if c$ = "+" mem[dp] += 1 elif c$ = "-" mem[dp] -= 1 elif c$ = ">" dp += 1 elif c$ = "<" dp -= 1 elif c$ = "." write strchar mem[dp] elif c$ = "," print "input not implemented" elif c$ = "[" if mem[dp] = 0 br = 1 repeat ip += 1 if code$[ip] = "[" br += 1 elif code$[ip] = "]" br -= 1 . until br = 0 . else br[] &= ip . elif c$ = "]" ip = br[len br[]] - 1 len br[] -1 . ip += 1 . . func syntax code$ . for i to len code$ h$ = substr code$ i 1 if h$ = "[" br += 1 elif h$ = "]" br -= 1 . if br < 0 return 0 . . return if br = 0 . repeat inp$ = input until inp$ = "" code$ &= inp$ . if syntax code$ <> 1 print "syntax error" return . exec code$ # input_data ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.> ---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.