# $Id: /mirror/trunk/languages/befunge/README 35472 2009-01-12T16:04:08.653780Z jquelin  $

DESCRIPTION
-----------
This is a Befunge interpreter written in PIR.

This interpreter should be Befunge-93 compliant. This means the
playfield is limited to 80x25. This should also mean that the torus
can hold *only bytes* (that is, you can't store/fetch numbers greater
than 255 or less than 0), but actually I do not check for over /
underflow - for now.

You should compile and test the files with:

     $ make test

Then you can run your Befunge program with:

     $ ../../parrot befunge.pbc [-d] foo.bef

The -d flag enables debugging within the befunge interpreter (not yet
fully implemented, this is a work in progress). Type 'help' in the
debugger to see the commands supported.


FILES
-----
The files are the following:
        befunge.pir    the main loop
        debug.pir      routines for the debugger
        flow.pir       handles the flow-control instructions
        io.pir         handles the i/o related instructions
        load.pir       function to load the code from source file
        maths.pir      handles all the maths instructions
        stack.pir      handles the stack instructions
        Makefile       a little Makefile generated by config/makefiles/root.in
        Configure.pl   regenerate Makefile
        test.bef       a befunge script that test almost all the
                       instructions (and is even self-modifying!)
        pascserp.bef   a befunge script generating variant of Sierpinsky
                       triangle (by Chris Pressey)
        t/harness      the test harness script
        t/basic.t      test test.bef


BUGS
----
* pascserp.bef output is not correct (right bottom part of image is just
noise)


TODO
----
* more error checking
* better rand() methods
* more tests (with Perl and Test::Harness)
* debugging options (work in progress)
* implement Befunge 98


AUTHOR
------
Jerome Quelin, <jquelin@cpan.org>


ACKNOWLEDGEMENTS
----------------
I would like to thank:
* Chris Pressey, creator of Befunge, who gave a whole new dimension to
  both coding and obfuscating.
* Leon Brocard and Rafael Garcia-Suarez, for giving me this crazy
  idea.
* Leon Brocard (again), because he told me he will help me with the
  Befunge-98 version :o)
* Dan Sugalski and all the parrot folks (you know who you are) for
  providing such a nice toy to play with.


COPYRIGHT
---------
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.


SEE ALSO
--------
* http://www.parrot.org
* http://www.catseye.mb.ca/esoteric/befunge/

