That is one thing I'd love to see implemented, and I think it's been done in parts. I think the 328 is a bit light for it, but a Mega with it's extra RAM (that being the critical item usually) could do it. What I have envisioned is using the PS/2 keyboard lib, TVout Lib, and some implementation of BASIC interpreter/console. Black and white composite video out done with two resistors.
I think Nick Gammon has implemented something, and others probably also, involving a bootloader variant that looks to an SD card to see if there's new firmware to flash, and if found, flashes. By the way, I think in general, I am going to look into this idea further, as it seems to me that would be a great way to handle reflashing sometimes. No computer needed, just carry a SD card with the updated firmware, reboot, and it flashes the new software. Kinda reminiscent of Cartridges (ROM) from the old Atari systems of my youth. Come to think of it, I would love to have that on a shelf to grin at now and then.. Atari ROM BASIC.
I think there are several BASIC implementations out there that could probably fit the bill and could be compiled under GCC, yes?
In any case, to the Original Poster..
You are doing great. Nothing is going to teach you more than getting something wrong and having to figure out what you need to do to fix it.. no better way to understand a thing than doing it. I'm dangerously undertrained and drawn to exceedingly foolish ideas. I consider physical laws an attempt by the Man to keep me Down. When I see something that works well, I know in my heart that I can do it less efficiently, in a more costly manner, and probably with significant risk to innocent children. In other words, I'm the guy every real engineer hates. Arduino is made for us.
Your best resource is these forums and the people that populate them. It's really simple here, actually- as long as it's a reasonably intelligent question, and you've attempted to understand it or search out an answer- ask away! Most of us here are in the same boat as you.. we are learning. We're NOT professional engineers.. we are the target audience of the Arduino project- students, artists, and others that have a need or interest in using embedded systems, but in all honesty don't want to have to get neck-deep in registers and interrupts to do so. Just a simplified version of "C", the most fundamental of all modern programming languages. You really can't choose a better language (IMO) for this type of work, and what's great is that what you learn here applies to languages that are used throughout the IT world. You learn C, you basically have also gotten a good grasp of ALL structured languages, including C++ and Java... and since Arduino is "C" with training wheels, take some time to read through the code in the examples provided with the IDE. They for the most part show how many of the commands are used, in real working programs.. I often will start with one of the examples and then build my code out from the skeleton framework provided from the example.
Happily, there is a BIG contingent of absolute engineering geniuses who jump in when they see someone who really is trying to understand and needs some assistance.. and as time goes on, these noobies rapidly start answering questions as they also learn. It really is a very interesting dynamic, welcome to it!
If there's a core truth to the Arduino project it is this: "Arduino is what you make of it...."