@permacomputer @dirtycommo
Thinking about your #TinyBASIC project:
What I really loved about coding in BASIC on 8bits was the simplicity, mostly when it came to graphics: you would just clear screen and draw. This simplicity was lost with all the attempts to make the code portable (which is anyway always limited). But other features were actually complicating things.
If we can make interpreter really tiny, like the 4 or 8 KB, than the increased size od RAM would allow for some type of RAM disk. Because the full screen editor won't make sense with single file, because in normal BASIC interpreter, only one program is present at memory at one time, so it would not allow editing source code.
The DATA and READ is horrible approach, especially if you consider the limited amount of memory available. You have to store everything twice - once as source code and once as data. This would be ok for compilers, as you would somehow convert the DATA directly to binary data and READ would create pointers to existing strings (with numbers, it would be more tricky), but it is extremely limiting when interpreting code - interpreter, source code and binary data have to exist at the same 64 KB or RAM.
What would be nice, if BASIC would consider available RAM as kind of RAM disk, with named files. Like mini-CP/M. Or like mini-Python. But it will be still interpreter. Instead of RUN, you would have to type program name.
So EDIT EDIT would edit the source code of editor itself.
You would have to name your program, like in big languages, but you could name it RUN. So EDIT RUN would edit your "main" program file, which would be still executed by RUN. There would be even LIST, which could list the last executed or edited program - for each "system" level command, the last used argument would be supplied as default, so you could cycle EDIT, RUN and LIST, and your EDIT could be still written in BASIC.
I think making BASIC extensible in BASIC would be very interesting design choice.