# bef(1)
### NAME
**bef** - interpret a Befunge-93 program
### SYNOPSIS
`bef [-d] [-o] [-u] [-q] [-i] [-=] [-l] [-t]
[-r INPUTFILE] [-w OUTFILE] [-s STACKFILE] [-y DELAY]
BEFFILE`
### DESCRIPTION
Load the file _BEFFILE_ as a Befunge-93 program and interpret it,
terminating when the Befunge-93 program terminates.
`bef` takes a few options.
-d
Run the program with a visual display of the playfield
as it runs (debugger). See IDIOSYNCRACIES below for
important notes.
-o
Old versions of `bef` contained an off-by-one error;
this flag reproduces that behaviour, should it ever
be needed to maintain backwards compatibility.
-u
Old versions of `bef` had undefined behaviour (inherited
from C) if an EOF occurred during a `&` instruction;
this flag reproduces that behaviour, should it ever
be needed to maintain backwards compatibility.
(The current behaviour is to push -1 onto the stack.)
-q
Suppress all output except for the output that the
Befunge program itself produces.
-i
Suppress the warning that is displayed when `bef`
attempts to execute an unsupported instruction.
-=
Instruct `bef` to interpret Befunge-97-style directives
embedded in the source code as directives rather than
as Befunge-93 instructions.
-l
Old versions of `bef`, when given an input program
line longer than 80 characters, would wrap it into the
next line when loading it; this flag reproduces that
behaviour, should it ever be needed to maintain
backwards compatibility. (The current behaviour is to
truncate such lines.)
-t
Old versions of `bef`, when an `#` instruction was
present at the very edge of the playfield, would wrap
inconsistently when executing it; this flag reproduces
that behaviour, should it ever be needed to maintain
backwards compatibility.
-r INPUTFILE
Have the Befunge program, when it performs input
(`~` or `&`), take that input from INPUTFILE instead
of from standard input.
-w OUTPUTFILE
Have the Befunge program, when it performs output
(`,` or `.`), send that output to OUTPUTFILE instead
of to standard output.
-s STACKFILE
As the Befunge program runs, log the contents of the
stack at each step to STACKFILE.
-y DELAY
Specify the delay, in milliseconds, between executing
each instruction, when `-d` is being used. Has no
meaning when `-d` is not being used.
### IDIOSYNCRACIES
If _BEFFILE_ does not end with a file extension, `bef` will helpfully
append `.bf` to it before trying to load it, even if a file-extensionless
file by that name exists.
In most setups, if `-d` is given, but `-w` (resp. `-r`) is not given, then
`,` and `.` (resp. `~` and `&`) will have no effect at all; in particular,
they will not pop anything or push anything onto the stack. This can
result in surprising behaviour when attempting to debug programs with I/O.
The simplest workaround is to give `-w` and `-r` options whenever the
`-d` option is used.
### AUTHOR
Originally written by Chris Pressey; bugfixes and contributions from
several contributors. See comments in the source code for more details.
### SEE ALSO
**bef2c**(1), **befprof**(1), **every other Befunge-93 implementation ever**(1)