vunderba
6 hours ago
Nice job. The sound effects are a bit too advanced because early IBM computers shipped with pretty simple, magnetically driven dynamic speakers.
On a related note, I’ve actually spent the last four months working on a 100% faithful adaptation of both QBasic and QuickBasic 4.5 that runs entirely in the browser on a virtual CPU and hardware abstraction layer. It’s a love letter to everyone who learned to program on Microsoft’s BASIC interpreters in the ’80s and early ’90s.
The best compliment I’ve received so far is from friends who grew up in the same era I did: when I fullscreen the browser, a few of them assumed it was a virtual machine running the real thing.
A QBasic port of the original BASIC-based DONKEY.BAS was one of the first programs I got running in it:
HeyLaughingBoy
6 hours ago
At my first job, our entire order-entry and inventory management system was written in QBASIC. I wish I had the source to try it out with this.
I know someone who might, if we could figure out how to get it off a DOS 5.25" floppy!
ColdStream
39 minutes ago
The good news is that 5.25" floppies have tended to be more resilient to time than the 3.5" discs. Turns out just having less data spread over a larger space helped them in this regard.
Hardest part is usually trying to find working drives and a means of getting the data off the system.
VorpalWay
6 minutes ago
The best (and most flexible) way to get data of old floppies is https://github.com/keirf/greaseweazle which reads the data at a raw magnetic level using a standard floppy drive and a custom open source circuit board which replaces the host controller.
However, if you are specifically dealing with PC floppies, it is potentially overkill (but it might still be the easiest way to hook up a 5.25" floppy drive to a modern computer).
5.25" drives may also need a separate power supply in addition to the greaseweazle, for 3.5" drives the GW has enough power to power the drive directly though.
vunderba
3 hours ago
That’s awesome. If you ever end up getting a copy of it, I’d love to stress-test QBasic-Core against it since I built in a virtual hard drive to allow File I/O (PUT for random access, PRINT to file number, etc.)
I’ve got a fairly large collection of several hundred programs from the early to late ’90s that I’ve been carefully testing A/B testing against period accurate hardware and my simulator but actual professionally used QBASIC-based applications from back with the source intact are hard to come by.
d3Xt3r
3 hours ago
And for the slightly younger folks who have more memories of Visual Basic than QBasic, check out GAMBAS: https://gambaswiki.org/website/en/main.html
vunderba
3 hours ago
Loved Visual Basic! VB3 was probably my first experience as a kid to the idea of “threading” and UI-blocking operations.
Remember this?
DoEventsd3Xt3r
3 hours ago
I do remember DoEvents! Sadly it's not present in GAMBAS, but there's WAIT, which is kinda the same: https://gambaswiki.org/wiki/lang/wait
mysterydip
5 hours ago
This is fantastic! As one of those kids who spent the early 90s in QBasic, thank you!
NuclearPM
2 hours ago
Do non-magnetically driven speakers exist?
racingmars
2 hours ago
Yes, electrostatic speakers are a good example. Also a lot of PC motherboards I've had over the years have had the little piezoelectric speaker. And while still magnetic, there are planar magnetic speakers which are much more like electrostatic speakers (just using a magnetic field instead of electric field) than the typical moving coil / dynamic speaker drivers that you think of.
LeBit
an hour ago
This guy knows speakers.
I have a pair of Magneplanar speakers. They always impress people.
alana314
an hour ago
Nibbles!
mosburger
5 hours ago
aw neat I'd love to try doing this for its predecessor GWBASIC (my first programming language on the Tandy 1000EX)
vunderba
4 hours ago
You absolutely should!
I’ve already sunk hundreds of hours into building out the fidelity of QuickBASIC (everything down to emulating memory access so you can simulate realistic PEEKing and POKEing), so I don’t have the sanity points left to tackle any other variants myself, but I’d love to see a GW-BASIC version.