( 
A brainfuck implementation written in Friendly Persuasion.
8/20/2026

This thing is really iffy as of now; some programs work and some don't.
I'm still trying to figure out why... this is just on here in a somewhat
unfinished form for now.
)

ARR INT tape 255 {0}
STR code 1000 "x"
INT ptr 0
INT i 0
INT cell 0
CHR cellchar 'x'
INT looppointer 0
INT skipflag 0
CHR cur 'x'
OUTWN ":"
IN code
LABEL loop
INDEX code i cur
DETERMINE cur IS '\0'
	JUMP exit
END
NEXT cur IS ']'
	INDEX tape ptr cell
	DETERMINE cell
		STORE looppointer ptr
	END
	STORE 0 skipflag
END
NEXT skipflag
	JUMP conti
END
NEXT cur IS '>'
	DETERMINE ptr IS 255
		STORE 0 ptr
	END
	OTHERWISE
		INC ptr
	END
END
NEXT cur IS '<'
	DETERMINE ptr IS 0
		STORE 255 ptr
	END
	OTHERWISE
		DEC ptr
	END
END
NEXT cur IS '+'
	INDEX tape ptr cell
	INC cell
	INSERT tape ptr cell
END
NEXT cur IS '-'
	INDEX tape ptr cell
	DEC cell
	INSERT tape ptr cell
END
NEXT cur IS '.'
	INDEX tape ptr cell
	CAST cell CHR cellchar
	OUTWN cellchar
END
NEXT cur IS ','
	IN cellchar
	INSERT tape ptr cellchar
END
NEXT cur IS '['
	INDEX tape ptr cell
	INC looppointer
	STORE ptr looppointer
	DETERMINE cell IS 0
		STORE 1 skipflag
	END
END
LABEL conti
INC i
JUMP loop
LABEL exit
