I was thinking earlier today about making a small BASIC interpreter for the Arduino. There's plenty of ROM space on a 328 to make something comparable to the old Microsoft BASIC that ran on the Altairs.
RAM may be more of an issue. Traditionally, the old micros would keep the program in a slightly compressed form in RAM and run from there. I'd could see an Arduino BASIC starting with that approach, but it would be really interesting to try to actually store the program in the ATMega's Flash memory. Alas, you can only write to Flash a page at a time, so maybe a byte-writable SPI Flash would be a better medium to modify. You could write line-numbered statements out to Flash in a log-fashion, with an in-RAM line number table pointing to the data. At startup, you'd just read lines, altering the table until you get to the end of the log. The "NEW" command would just reset the log and erase the flash, and you could garbage collect by LISTing the program to the terminal, doing a NEW, then resending the program.
The nice thing about a BASIC on the Arduino would be the immediate feedback. It could have extended commands for the various reads and writes.
Has anyone tried anything like this?