To clarify my slightly obtuse original post, I started this by using PuffinBASIC, but I ended up forking it because there were a few things implemented differently than my reference QuickBASIC 4.5 installation (running on DOSBox):
* label syntax / case-insensitive labels
* forward function declarations
* flexible array indexing (i.e. in QBasic your arrays could start at 0, or at 1, and it somehow figured it out, and it still had bound checks) -- haven't implemented this yet
* various functions (VAL, INKEY$, SLEEP)
Lastly, and more importantly, PuffinBASIC required Java AWT support (which made it necessitate a desktop), but I have refactored BabaBASIC to abstract the HCI portions (audio/video/keyboard).
Another interesting technical point is that the "Run View", which displays a terminal through which you interact with your script is also a (very small) fork of Termux.
(I needed something to efficiently draw a text buffer while handling all the VT100-related functionality.)
the commit log is the definitive (and painstakingly accurate) log of changes: https://github.com/ianatha/bababasic/commits/main
To clarify my slightly obtuse original post, I started this by using PuffinBASIC, but I ended up forking it because there were a few things implemented differently than my reference QuickBASIC 4.5 installation (running on DOSBox):
* label syntax / case-insensitive labels * forward function declarations * flexible array indexing (i.e. in QBasic your arrays could start at 0, or at 1, and it somehow figured it out, and it still had bound checks) -- haven't implemented this yet * various functions (VAL, INKEY$, SLEEP)
Lastly, and more importantly, PuffinBASIC required Java AWT support (which made it necessitate a desktop), but I have refactored BabaBASIC to abstract the HCI portions (audio/video/keyboard).
Another interesting technical point is that the "Run View", which displays a terminal through which you interact with your script is also a (very small) fork of Termux.
(I needed something to efficiently draw a text buffer while handling all the VT100-related functionality.)