43 lines
1.2 KiB
Plaintext
43 lines
1.2 KiB
Plaintext
bf$ = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>->+>>+[<]<-]>>.>" + \
|
|
\ ">---.+++++++..+++.>.<<-.>.+++.------.--------.>+.>++.+++."
|
|
PROCbrainfuck(bf$)
|
|
END
|
|
|
|
DEF PROCbrainfuck(b$)
|
|
LOCAL B%, K%, M%, P%
|
|
DIM M% LOCAL 65535
|
|
B% = 1 : REM pointer to string
|
|
K% = 0 : REM bracket counter
|
|
P% = 0 : REM pointer to memory
|
|
FOR B% = 1 TO LEN(b$)
|
|
CASE MID$(b$,B%,1) OF
|
|
WHEN "+": M%?P% += 1
|
|
WHEN "-": M%?P% -= 1
|
|
WHEN ">": P% += 1
|
|
WHEN "<": P% -= 1
|
|
WHEN ".": VDU M%?P%
|
|
WHEN ",": M%?P% = GET
|
|
WHEN "[":
|
|
IF M%?P% = 0 THEN
|
|
K% = 1
|
|
B% += 1
|
|
WHILE K%
|
|
IF MID$(b$,B%,1) = "[" THEN K% += 1
|
|
IF MID$(b$,B%,1) = "]" THEN K% -= 1
|
|
B% += 1
|
|
ENDWHILE
|
|
ENDIF
|
|
WHEN "]":
|
|
IF M%?P% <> 0 THEN
|
|
K% = -1
|
|
B% -= 1
|
|
WHILE K%
|
|
IF MID$(b$,B%,1) = "[" THEN K% += 1
|
|
IF MID$(b$,B%,1) = "]" THEN K% -= 1
|
|
B% -= 1
|
|
ENDWHILE
|
|
ENDIF
|
|
ENDCASE
|
|
NEXT
|
|
ENDPROC
|