Becky on Nostr: Putting the interpreter in a different bank is easy. Splitting up the different data ...
Putting the interpreter in a different bank is easy. Splitting up the different data types into different banks gets really complicated. Performance would be impacted by having to switch back and forth between data banks.
Imagine what the interpreter would have to do in order to deal with:
let a = myVar + val(myStringVar$)
A BASIC interpreter only deals with the byte it needs at a time, so you have to switch banks for the ‘let’, then the ‘a’, then back to get the name of myVar, then to the integer bank to get the value of myVar, then back to read the ‘val’, etc.
That’s why I think you’d have to more or less rewrite the thing, because once you bring dealing with separate banks into things, you might as well rewrite it to use 24-bit pointers.
Imagine what the interpreter would have to do in order to deal with:
let a = myVar + val(myStringVar$)
A BASIC interpreter only deals with the byte it needs at a time, so you have to switch banks for the ‘let’, then the ‘a’, then back to get the name of myVar, then to the integer bank to get the value of myVar, then back to read the ‘val’, etc.
That’s why I think you’d have to more or less rewrite the thing, because once you bring dealing with separate banks into things, you might as well rewrite it to use 24-bit pointers.