3 ms·
This is nice, I'd like to know the changes you made. I started a discussion on GitHub, I think the killer feature of QBasic and even more so QuickBasic was the
by stuaxo 3y ago
This is nice, I'd like to know the changes you made.
I started a discussion on GitHub, I think the killer feature of QBasic and even more so QuickBasic was the help and reference.
Even the ASCII table was fun to look at and go grab characters, you could imagine something analogous for Unicode.
Similarly for all the stuff in there working out modern equivilents.
The annoying stuff was how much hassle it was to do extra things like handle the mouse pointer via assembly, it would be good if this has extensions for touch etc all documented.
- thatha7777 3y agoOhhhh yes, you're absolutely right. Frankly, this is my first Android/mobile application, so I'm still trying to wrap my head around the limited screen space and whatnot. I'd be awesome to get some syntax hints, or some form of better autocompletion (it only recognizes some basic statements/lang-delcared functions right now). I'll follow up on GitHub -- thank you for contributing the discussion there, this is very exciting!
- thatha7777 3y agoAh, and I almost forgot, in re the changes: the commit log is the definitive (and painstakingly accurate) log of changes: https://github.com/ianatha/bababasic/commits/main 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.)
- stuaxo 3y agoQB64 has taken on the mantel of modern reimplementation, its worth seeing if there are any extensions from there that are worth implementing.
- knome 3y ago>I think the killer feature of QBasic and even more so QuickBasic was the help and reference without any internet access in the 90s, I taught myself QBasic largely out of that help reference in order to write little games and simulations. it really was something fantastic.
- jamon51 3y agoI had the same experience as a kid. Probably built over a hundred QBasic-powered games with no internet to help me. I missed it, so last year when I rebuilt my website I built it in QBasic: jamon.dev
- rlawson 3y ago100%. Heck I coded up a system that printed footage marks along the side of industrial coated material using qbasic interfacing to an industrial printer via the joystick port on a 386! No internet so I used the help system constantly. Eventually the company kept a pile of 386's stacked as spares because the system ran too fast on a 486.
- deleted 3y ago[deleted]
- donatj 3y ago> the killer feature ... was the help and reference So much this. The help in QBasic is how I learned to program at ten years old in a pre-internet world. A couple years later my friend was trying to push me to learn C and I was sorely disappointed that there was no help, at all.
- thatha7777 3y agoI'm actively working on some kind of "live docs" feature for BabaBASIC. Though ... I have to wonder (and I'm only half-joking) -- should it just be a ChatGPT integration that can answer questions?
- speps 3y agoNo, plain old docs
- thatha7777 3y ago'twas just a joke
- stuaxo 3y agoDefinitely not ChatGPT, even if you put in a thing that any code it ran would be tested somehow for correctness.