Well, from a language perspective, what I have seen so far is only loosely termed 'basic'. It's probably best to think of this as a really specialized basic-like language. I mean, you aren't going to add tons of stuff that is in other basics..like the string functions, IO functions, etc. One thing you might want to consider adding in is some kind of USR() function...that is, the ability to embed blocks of ML inside a string or other data area and then call it from basic. Maybe for this basic you would just allow the direct insert of opcodes with line numbers.
10 rem ml insert
20 LDA PFCOL0
30 etc...
Syntactically, the only thing that really jumps out at me is the inelegant way that the sprite data is laid out...having the line feeds embedded in the data is a little funky, although it makes visualization easier. You might want to look at the traditional basic DATA statement.
Anyways, it looks very nice overall.