uBASIC

Ever since starting writing small BASIC programs on
my first computer (an ABC80)
I've always wanted to write a really small BASIC interpreter. So I sat
down for an hour or two, during one of the sessions
at ACM/Usenix
MobiSys 2006, and did it.

The (non-interactive) uBASIC interpreter supports only the most basic
BASIC functionality: if/then/else, for/next, let, goto, gosub, print,
and mathematical expressions. There is only support for integer
variables and the variables can only have single character names. I
have added an API that allows for the program that uses the uBASIC
interpreter to get and set BASIC variables, so it might be possible to
actually use the uBASIC code for something useful (e.g. a small
scripting language for an application that has to be really small).

My intention with this program is to be able to use it for adding a
simple scripting language to severely memory-constrained applications
or systems (e.g. a scripting language to the web server applications
in uIP or Contiki). While I
secretly hope that the uBASIC code may be useful to someone, it
currently is a really quick hack made primarily for personal
enjoyment. However, if you are interested in looking at how a really
small BASIC interpreter can be written, go ahead and take a look at
the code!