Lovely, it's like if LCARS and Pingus built a website together...but no complaints here, it brings back a lot of good memories!
I took a deep dive into BASICs earlier this year and came away with some unexpected results. In software, these stood out:
- SmallBASIC ...not the Microsoft one. Wow this is quite an interesting set of tools, and I was impressed by ongoing developments. I started with it on my phone and continued on my other platforms since it worked so well. There are some faux-OOP convenience features even, like myfakeobject.value = 10
- QB64pe ...this really holds your hand and the documentation is great.
In discussions with developers, I was surprised to find some extremely intense, protective vibes. I'd consider "my BASIC == my childhood" a pretty reliable model. Simple how-to queries that would get ordinary answers in other languages sometimes brought out defensive responses.
In group discussions there was also an interesting overlap between "strangely protective of my past" and "prefers writing BASIC" that came up over and over while I was trying to figure out the overall ecosystem of languages.
For example, somebody wrote an algorithm example full of $ii $tk $zx and so on and I asked them about this (who knows, maybe there's some logical reason to not use my_variable_name for example) and the tone became very defensive, even insisting that maybe it was wrong but they are never going to change! Which didn't exactly have anything to do with what I was asking...
In the various online forums there was frequently an ongoing argument over who left, for what reasons, where they ended up, and are you a member of that forum, and so on.
Overall there was a surprising amount of interpersonal drama given its proportion to the active surface area of this language. And a lot of emotionality that just isn't as prominent in other communities I experienced, even though it's probably there at some level.
Since I have spent a lot of professional time doing relationship work with techies, these things kind of reminded me of work pretty quick, and I found myself heading to some more modern languages just to get beyond the unaddressed, or unaddressable, feels-factor.
Still, I look forward to coding some more in the future and particularly in trying out some of the newer tools I discovered.
> For example, somebody wrote an algorithm example full of $ii $tk $zx and so on and I asked them about this (who knows, maybe there's some logical reason to not use my_variable_name for example)
The only Basic I used long ago was in C64 and AFAIR only the first two characters were significant; maybe the person was (unconsciously) trying to write some kind of "portable" code :)
> In the various online forums there was frequently an ongoing argument over who left, for what reasons, where they ended up, and are you a member of that forum, and so on.
In my experience, groups devoted to niche topics tend to have this sort of drama and discussions about who goes to which other forums, with rivalries between groups with similar interests, etc.
Retro-anything communities in particular. Retro-anything also has the added flavor of "what they are doing these days is wrong, back then we would do $THING instead and it was so much better."
TRS-80 Level I was very limited, and BASIC V2 on the C64 was only barely adequate - anything and everything interesting required myriad PEEKs and POKEs. I also pity anyone who tried to do anything with Intellivision ECS BASIC.
Then you have your awesome BASICs like IBM Cassette BASIC, GW-BASIC, QB, and BBC Basic.
Of the ROM BASICs, I'd say Amstrad BASIC is even better than BBC BASIC. The BASIC on the Commodore 128 is pretty good but a bit sluggish.
TRS-80 Level I was limited because it was essentially Tiny BASIC with floating point added. Level II BASIC was Microsoft BASIC.
The Apple II initially came with Woz's Integer BASIC in ROM. It was better than TRS-80 Level I BASIC, unless you needed floating point. The Apple II Plus had Microsoft 6502 BASIC in ROM. It was essentially the same BASIC that Commodore used in the VIC-20 and 64, except Apple added a few graphics commands to theirs and Commodore added the screen editor. The Apple II and Commodore 64 ran at about the same clock speed, so when you benchmark their Microsoft 6502 BASICs, they're pretty much identical in speed.
The C64's BASIC V2 had no graphics or sound commands, which was a massive draw-back on the one hand; on the other hand, it pushed lots of teenagers into learning machine code.
For lack of an assembler, the initial way to use it was to hand-compute the op codes and put them into BASIC's "Data" directives, which you could read in a loop and store in some free area using POKE and then call from BASIC with the SYS command. One wrong number and the whole thing hangs, reset, type it all in again or load from a music cassette if you were lucky and had stored a recent version on tape (which took many minutes to read back in whilst giving various beeping sounds).
Still love me some blue screen DOS edit writing basic back in the day. I think it was already called QBasic. When I first saw this posted I thought "oh dear, a QBasic implementation in .NET"...
Sadly today using QBasic for real work would be difficult if you have to interact with anything else that basic I/O. I'm not aware of a websocket QBasic implementation or any kind of scalable framework. But it has to keep existing, so we can teach our children basic before moving on to the horror show languages we use today.
Dark blue color themes are seriously underrated in modern IDEs. VS Code has a pretty nice one it ships with called Tomorrow Night Blue. Hide and turn off a lot of the junk and clutter in its UI (or just use zen mode) and VS Code can feel a bit like QBasic.
In the early 00's on a Windows XP machine, IIRC I had Abyss Web Server running and had QBASIC.EXE configured as a CGI interpreter. I was trying to make a rudimentary image gallery.
I learned to code in isolation on QB back in the day - having interactive help right in the IDE was amazing in my pre-internet days. Later on I found the quickbasic version that let you compile executable (it may have been VB 1.0 IIRC) and from there on to FreeBasic (a qb compatible front end for GCC) and, well, here I am, doing this for a living from this.
Keep in mind .COM wasn't really exotic back then. I remember many assembly tutorials taught how to write .COM executables. Many DOS era commands and utilities were .COM (well, they were commands after all!).
As for .BAS vs .EXE, I remember it was definitely about .EXE feeling "more real". I mean, I had the Basic interpreter in my computer anyway, and distributing programs wasn't in my mind, so a compiler wasn't really needed... it just felt that an .EXE program I could write was more "like the real deal"!
Assembly was absolutely exotic coming from QBasic & QuickBasic though. Moreso as the '90s progressed and writing .COM was seen more often in the dwindling number of applications requiring extra attention to system resources.
Agreed. I can't say I enjoyed learning assembly for x86. Basic was so much fun in comparison. Kids have it so much better these days with high level languages that can do pretty much anything without requiring arcane knowledge!
> I learned to code in isolation on QB back in the day - having interactive help right in the IDE was amazing in my pre-internet days.
Hah, same for me. I had no peers who knew programming, only a buddy who mentioned QBasic after I stumbled upon a small BASIC program in a magazine.
I'd spend evenings just going through each successive keyword in the help, trying to figure out what they meant. Didn't help that we only started learning English in school at age 12, so lots of words I didn't understand at age 13.
On the positive side, I think this is what made me so good at reading and understanding documentation, a skill that's been incredibly valuable for me since.
I worked my way through a printed manual for GW-BASIC alphabetically, with no idea why the graphics keywords all failed until I got to SCREEN to change video modes!
Haha I love this! Brings back memories of learning stuff by trial and error. I remember poking around in DLL files with a text editor and trying to find ways to call the function names I could see inside them… never did succeed at that haha
I was the same. I would download the games and then start messing around with the code/variables. By breaking things, I learned how they worked. Self taught myself to program via this meathod.
I still used QB4.5 occasionally to bash out a code idea just because it is so easy to get an idea down and running before moving it onto the real deal.
I am still upset that I threw out the hard drive with my side scrolling platforming game. It could do smooth scrolling like Mario on the NES but on a 486 33Mhz. Learning to split and address data sets as is needed would the game changer for me in gaining the speed up to what was needed.
I posted an article to my blog about a scene from Stranger Things where Astin's character brute forces a password by writing a BASIC program. It was such a great homage to the 80s.
My job now (writing email newsletters for developers) directly traces back to the QBasic era, as I published a regular BASIC "fanzine" on comp.lang.basic.misc in the mid 90s and caught the publishing bug! I moved on to Turbo Pascal 7 shortly thereafter, alas.. :-)
My job now (writing email newsletters for developers) directly traces back to the QBasic era, as I published a regular BASIC "fanzine" on comp.lang.basic.misc in the mid 90s and caught the publishing bug! I moved on to Turbo Pascal 7 shortly thereafter, alas.. :-)
Another QB site well worth the visit is http://petesqbsite.com/ (not mine, despite the similar name).
I found myself in there a few times. Kinda wondering how many of us in this thread knew each other from usenet/dalnet/efnet/tek's forum/marcade's forum/etc and we just don't realize it cuz of pseudonym and life changes.
I was in the US Navy, and spent an awful lot of time on a deployment hacking away on our ancient laptops to write QBasic programs to automate some of our completely-not-computer-related work. For instance, I wrote a little program to format short text messages in a particular way and write them to a floppy. Then I could hand that floppy to the ship's radioman, and he'd run a program to load the messages and broadcast them over a packet radio to the MARS radio network. Some ham operator in the States would call the recipient, read them the message, transcribe the reply, then radio it back to our ship. I'd pick up a floppy with those replies, bring them back to the medical department where I worked, and print them out.
At the time, the quickest way to contact home was to buy a calling card for the onboard satellite phone, which cost something like $5 per minute to use. The alternative was to write a physical letter, and if you were lucky and the person wrote back immediately, that would be about a one month round trip. My little program was free to use, and shortened the round trip to about one day. I can't exaggerate how happy this made my coworkers and bosses.
One day, a particularly enlightened boss sat me down. "Why do you lie to yourself that you want to be in medicine?" "Uh, because I want to be a doctor?" "Stop kidding yourself. You want to work with computers. We both know it." Whoa. It was like a lightning strike. Well, of course I could go to school for that thing which had been my obsessive hobby since I was tiny! Why hadn't I thought of that?!
And so I got out of the Navy, enrolled in comp sci, and here I am today rattling on about it.
Thank you, QBasic. You weren't running on my beloved Amiga, but you were in the right place and time to kick off a career that I've loved every step of the way.
Tremendous! One of my first tasks with QuickBasic 4.5 was writing an AKAC-874 code generator (for training purposes only) for some Marines at the embassy where I was stationed. It seemed the least that I could do considering they kept me fed with Grade A burgers direct from the States.
Hah, awesome! That’s exactly the kind of thing I would’ve written if you and I had swapped places.
In my crowd, it was well known that you wanted to spend your duty evening inspecting the ship’s kitchens. Make sure the officers’ mess cooks didn’t have too rough of a time and they’d make sure you didn’t leave hungry.
Wow, I think that's the first substantial MARS story I've ever read. Heard of it when I was getting licensed but never anything about its advantages. Fascinating, thanks for sharing.
It was miraculous. The trade off was that there was a small upper bound on the message size, and it was all transmitted in the open. You couldn’t write a long love letter, for example. But for short, urgent messages, or even a simple “I love you and miss you a lot”, it was astoundingly useful. The morale boost from knowing you could get word home in under a day was tremendous.
Love your story. I too ran into Qbasic as a teenager in the early 90s and ended up studying CS and then programming for a living. Actually the programming is for hire at the moment as I want to spend any amount of time I can get away from computers, but it comes in waves and before you know it I find myself tinkering with programming languages in my spare time. Do you ever think what would it be like for you if you decided to go to med school instead of CS?
I love what I do. A good day is one where I get to write lots of code. It’s one of my favorite things in the world.
I’ve thought about that. There were so many “what ifs”, you know? At one point I’d been accepted to the US Naval Academy, and I have a hard time imagining how that would have turned out. If it ever gets to the point that someone’s letting me drive a ship, things have gone very wrong in the world. And maybe I might’ve made a good doctor. Who knows? But I was never as driven to do that as I’ve been compelled to learn a language, or write a hobby project to solve some problem, or do the annual Advent of Code, etc.
No. I talked to lots of doctors about what it took for them to get there, and it wasn’t worth it to me. You have to be single-mindedly motivated to do it in a way I never was. Now I work for a healthcare startup where I can use my favorite skills to help people in a related, but different, way. That scratches the right itch for me.
And in one of life’s funny quirks, I ended up marrying a doctor. She’s as into her work as I am into mine, and she likes that she can tell me work horror stories and I like hearing them. It makes for some interesting dinner table conversation, to be sure!
The Amiga had Amos and Blitz Basic, they were pretty good too. It’s not where I started, I had a Spectrum +2 first but I certainly learned a lot there before graduating to Matt Dillon’s DICE C compiler.
The Amiga also had a Microsoft BASIC at some point (with custom additions to target the Amiga's specialized hardware and windowing environment). It got replaced by AREXX (a version of IBM REXX) starting from Kickstart/WB 2.x.
I loved AmigaBASIC. It was so futuristic after cutting my teeth on a Commodore 64.
I was so bummed about the move to AREXX. It was much better in many ways, like interacting with the system or other programs, but not nearly as good for writing actual code.
BlitzBasic was insane! I remember writing games on paper when I was ~13 years old whenever we were driving on vacation, just to type all the code into the computer as soon as we returned. Of course that contained dozens of syntax errors :-)
Around that time (early 90s) I was nearly a teenager passionate about programming looking for "mentors". The most brilliant programmers I met were adult people that already had daily jobs completely unrelated to computing.
I guess they got into computers too late in their path (or, maybe, computers got too late for them) and missed the time window to make that their main job.
One of them (he is in medicine, actually) still today write very complex and crazy algorithms in GW Basic that blow up my mind. A true hacker.
Thank you. That was one of the few life-changing moments in my life. It was so obvious in retrospect. I'd been glued to the screen since I started typing in programs from the backs of magazines in elementary school. It wove a powerful spell over me: "you own this little universe, and you can make it do anything you want it to -- as long as you can discover the right incantations." I was hooked. I guess I'd thought of becoming a doctor even earlier and it had somehow stuck in my head, even though that clearly wasn't my true passion.
I don't know why it hadn't occurred to me before then that maybe, just maybe, I should consider that my favorite hobby was also a nice career path. When my boss (who I profusely thanked later in life) pointed that out to me, I was blown away. I didn't sleep well afterward, at first because I had seen my whole planned future fall apart and re-form in a completely different way, and later because I couldn't wait to get started.
I've never looked back, not for a second. This is what I was meant to do. I love it, I'm good at it, and I've never since wanted to do anything else.
QBasic and QuickBasic weren't my first loves -- that spot is reserved for GW Basic -- but I sure spent a big chunk of my time experimenting with them. And like many others are saying here, they are a big reason why I ended up a programmer.
Hah! Somehow my parents had a GW Basic manual (but neither could program), so in my endless afternoons I ported some code from GW's dialect to QBasic's in order to make it work on my newer Basic interpreter.
Without Internet, an empty mind is Basic's workshop.
Don't you sometimes feel the internet is a double-edged sword?
Back then it was you and the computer, and maybe some magazines (well, and maybe BBS'es, but I never got into that). You had time to focus. The only major distraction were games, but then again we have many more today, and ALSO all the distractions of the always connected world.
The advantages today are obvious: every answer at your fingertips, online guides and interactive tutorials aplenty, chat, stackoverflow, no reason to get stuck in your programming journey.
The Qbasic GUI community was super tight knit back in 2005ish.
Classic hangouts at jacobpalm.dk, reviews by Todd Seuss at Data Components.
Halcyon days.
I got my start writing one of the guis that was reviewed by MystikShadows on Pete's QB Site... Making things appear on the screen was so exciting. Now I kinda do the same thing, but with Jetpack Compose in the automotive space.
QBasic was the first programming language I ever wrote anything in. I mostly just transcribed stuff from books I got at the library, but I did try to write my own games. I definitely messed with gorillas.bas.
How could I forget Gorilla.bas? At the time, I had a coworker who was obsessed with the game, always trying to get people to play with him during working hours.
One day when he was out, I messed with the qbasic source and made his gravity concept be a random number. My coworker's winning streak ended as did his constant nagging to get people to play!
In 1999 I worked in a national chain of computer stores to fund myself through my computer science degree.
One year I sent a “Happy Christmas” message to all stores on our internal Lotus Notes email system with a hyperlink in the email.
The link would, when clicked, load GORILLA.BAS into Qbasic and run it. The idea was, in my teenage mind, a little Easter Egg to cheer people up around the festive season. Unreal to think that you could just link and run an executable from an email back then!
An hour later I get a frantic call from group IT - I’d forgotten there’s no “exit” button - we now had 100s of stores where all the computers were playing Gorilla, and nobody knew the keyboard shortcut to quit the game.
I think the IT guys had to call every single store that day and tell them how to get out of Gorilla. For whatever reason, I wasn’t fired.
I grew up dirt poor, but scrapped together enough money that I bought a friend's old 286. (1995) I took a Pascal class, hacked a bit on my TI-85, but QBasic on that computer was the first place I did any programming of substance on my own. Even bought a QBasic book, the first programming book I ever owned.
The phone guy at MT Tech designed his own boards and wrote a switching program from scratch back in the late 90s in Qbasic while I was a student employee in the computer department there. Same guy who maintained the ham inter college backup route to MSU. I can honestly say most of the people back then and there were a lot smarter than me. Joe I hope you are alive and well.
Well, this is timely! I've been looking into porting one of my favorite classic games, VGA Civil War Strategy, from QBasic to JS – just reached out to the current maintainer today about it.
I remember doing a lot of QBasic on the computers in high school and having a blast – first time I ever felt like I really knew what I was doing, and somehow it even made learning by trial and error feel especially rewarding.
QBasic and QuickBasic were my intro to real programming. Before that I had written some batch files but there wasn't much you could do with them. Maybe make some menus to launch your apps. QBasic was fun to mess around with but I ended up pirating QuickBasic from my school's computers. Being able to compile to an .EXE was a revelation!
Back in the day, I remember doing tech work for the central bank in my country (Jamaica, circa 1991) and these English dudes were writing code in Quickbasic to help with some Foreign Exchange stuff for the bank.
We sat down together for a short while as they showed me thousands of lines of incredibly complex QuickBasic code.
It probably only lasted a short while as the bank upgraded their systems soon after that, but it was impressive to see what could be done with Basic for this time of corporate financial systems.
To this day those guys impressed the heck out of me, and that really caused me to switch from just doing computer repairs to programming.
I'm sad that platforms like Windows (or more importantly phones, iOS and Android) don't come with something similar to QBasic. If you didn't grow up with it it's hard to realize just how magical it was to turn on your family's brand new 486 and instantly have qbasic.exe installed and available from the get go. Even better, when you started it the program had an extensive help system that popped up and walked you through the basics. It even had a full reference of all the syntax, etc.--you didn't have to go hunting around on the internet to learn how to use it (because no one had access to the internet!). It was all right there and ready to go, just waiting for you to stumble on it. I wish every kid with a phone, tablet or computer today had a similar experience and tools available, not buried in app stores and downloads.
Simply, with QBasic specifically, you got...QBasic.
Yea, it came with a nice help system, but that help system was was a user guide and reference manual. It didn't teach you how to program. It just showed what the arguments to PRINT were. Useful, as a reference.
Outside of the TRS-80, which had a fairly large BASIC tutorial manual, the early 8-Bits had rather poor BASIC documentation. They were combined BASIC reference and user manuals, and not spectacular at either. And they certainly weren't robust computer programming tutorials by any stretch.
The simple point being is that while, yes, early computers came with BASIC, they weren't really set up for someone to actually learn how to program a computer. Anyone wanting to program the computer would need to find another book (or magazine) to learn programming. Even if that book were 101 BASIC Computer Games (which is an excellent mechanic, I learned a lot typing in BASIC programs).
Every computer today comes with a web browser, a web browser that can take them to any of a long list of sites where they can start coding immediately -- whether in Javascript, or even many other languages. If anything, of course, the problem is that the web is "too big", the menu "too large" and an unguided novice can get lost in vast array of choices. I actually pity some poor soul typing "learn javascript" into Google alone.
But, truth is, today, there are even few of those. Few are learning this stuff in a vacuum today.
The modern web is hardly a barrier to someone interested in programming today. The available resources are endless.
QBasic was a wonderful tool. It was beautiful and useful. A very elegant early IDE. Head and shoulders above GWBASIC/BASICA. But, still, stand alone it was incomplete.
Yep, I taught myself to program on a TRS-80 Color Computer in the early 1980s using only the included manuals for Extended Color BASIC. Then I taught myself 6809 assembler with Radio Shack's EdtAsm+ ROM cartridge and included manual plus a 6809 quick reference card I got free from Motorola.
That led to a lifelong successful career as a programmer and software entrepreneur with no formal schooling in programming, tech or business. In theory, all the info for free on the web should make it even easier to self-teach and bootstrap your way into the industry but I'm not sure it does in practice. Maybe only having one available path to self-instruct was somehow more effective?
That was probably because it was and always be associated with Bill Gates. Not all computers included an interpreter that was fully documented. Every computer since Netscape included JavaScript has had some kind of scripting language, but you’re a hundred percent correct on the documentation
Windows comes with VBScript, all you have to do is make a text file with the .vbs extension and double click it. It contains some very basic functions for input and output (query boxes and message boxes). ~15 years ago i wrote an intro to programming article in a magazine that used that, it is something that has been on Windows PCs since Windows 98.
Nowadays there is also Powershell which can use the entirety of .NET and of course one can make an .html file and open it in a browser in pretty much any OS.
I think it would need to present at least a little bit more of the qbasic experience. A simple editor, but it still looks different from notepad, and built-in documentation, and immediate access to samples and games.
Something that if found, the average 10 year old would find the sample games in about a minute of clicking around. Gorillas and snake is a must.
QBasic was my first programming language, which I was introduced to at about 13 years old. Today I am a senior engineer and the passion for programming all started back in that ugly blue screen around the turn of the century.
I was introduced to the programming language when I visited some family in the Midwest US. I had gone with my cousin to the home of a kid named “Robbie” that lived in a neighbor.
Robbie is what people today would call a, “script kiddie,” and he introduced me to a variety of his “hacking tools,” mIRC, and QBasic. I thought it was the coolest thing I had ever seen.
I spent the rest of my time during that trip in my aunts basement trying to write my own QBasic games and downloading other people’s QBasic projects and trying to modify them.
I began to attempt to write my own Zelda-esque game and was completely baffled by the concept of z-ordering and my giant green square of grass continues to cover my character and flash when I would make the character move around the screen.
It was all an absolutely mess, but it was my introduction to programming, and it changed my life forever. I was absolutely enamored with what I had discovered, and it was the beginning of a lifelong journey of exploration in technology.
I started writing QBasic programs at 8! And boy, did I suck! I too owe it to a childhood friend.
Too bad I lost my childhood programs (along with everything else) when the Chernobyl Virus ( https://en.wikipedia.org/wiki/CIH_(computer_virus) ) messed up my hard drive and I tossed it (no backups of course).
Wow, the part of your life story is identical to mine. 8 years, childhood friend, Chernobyl. I admit this this experience learned me to do proper backups.
151 comments
[ 3.2 ms ] story [ 242 ms ] threadI took a deep dive into BASICs earlier this year and came away with some unexpected results. In software, these stood out:
- SmallBASIC ...not the Microsoft one. Wow this is quite an interesting set of tools, and I was impressed by ongoing developments. I started with it on my phone and continued on my other platforms since it worked so well. There are some faux-OOP convenience features even, like myfakeobject.value = 10
- QB64pe ...this really holds your hand and the documentation is great.
- To-try: https://wonkey-coders.github.io/
In discussions with developers, I was surprised to find some extremely intense, protective vibes. I'd consider "my BASIC == my childhood" a pretty reliable model. Simple how-to queries that would get ordinary answers in other languages sometimes brought out defensive responses.
In group discussions there was also an interesting overlap between "strangely protective of my past" and "prefers writing BASIC" that came up over and over while I was trying to figure out the overall ecosystem of languages.
For example, somebody wrote an algorithm example full of $ii $tk $zx and so on and I asked them about this (who knows, maybe there's some logical reason to not use my_variable_name for example) and the tone became very defensive, even insisting that maybe it was wrong but they are never going to change! Which didn't exactly have anything to do with what I was asking...
In the various online forums there was frequently an ongoing argument over who left, for what reasons, where they ended up, and are you a member of that forum, and so on.
Overall there was a surprising amount of interpersonal drama given its proportion to the active surface area of this language. And a lot of emotionality that just isn't as prominent in other communities I experienced, even though it's probably there at some level.
Since I have spent a lot of professional time doing relationship work with techies, these things kind of reminded me of work pretty quick, and I found myself heading to some more modern languages just to get beyond the unaddressed, or unaddressable, feels-factor.
Still, I look forward to coding some more in the future and particularly in trying out some of the newer tools I discovered.
The only Basic I used long ago was in C64 and AFAIR only the first two characters were significant; maybe the person was (unconsciously) trying to write some kind of "portable" code :)
In my experience, groups devoted to niche topics tend to have this sort of drama and discussions about who goes to which other forums, with rivalries between groups with similar interests, etc.
Retro-anything communities in particular. Retro-anything also has the added flavor of "what they are doing these days is wrong, back then we would do $THING instead and it was so much better."
TRS-80 Level I was very limited, and BASIC V2 on the C64 was only barely adequate - anything and everything interesting required myriad PEEKs and POKEs. I also pity anyone who tried to do anything with Intellivision ECS BASIC.
Then you have your awesome BASICs like IBM Cassette BASIC, GW-BASIC, QB, and BBC Basic.
TRS-80 Level I was limited because it was essentially Tiny BASIC with floating point added. Level II BASIC was Microsoft BASIC.
The Apple II initially came with Woz's Integer BASIC in ROM. It was better than TRS-80 Level I BASIC, unless you needed floating point. The Apple II Plus had Microsoft 6502 BASIC in ROM. It was essentially the same BASIC that Commodore used in the VIC-20 and 64, except Apple added a few graphics commands to theirs and Commodore added the screen editor. The Apple II and Commodore 64 ran at about the same clock speed, so when you benchmark their Microsoft 6502 BASICs, they're pretty much identical in speed.
For lack of an assembler, the initial way to use it was to hand-compute the op codes and put them into BASIC's "Data" directives, which you could read in a loop and store in some free area using POKE and then call from BASIC with the SYS command. One wrong number and the whole thing hangs, reset, type it all in again or load from a music cassette if you were lucky and had stored a recent version on tape (which took many minutes to read back in whilst giving various beeping sounds).
https://www.pcjs.org/software/pcx86/lang/microsoft/basic/qui...
Sadly today using QBasic for real work would be difficult if you have to interact with anything else that basic I/O. I'm not aware of a websocket QBasic implementation or any kind of scalable framework. But it has to keep existing, so we can teach our children basic before moving on to the horror show languages we use today.
https://qb64.com/
https://github.com/rtrussell/BBCSDL
https://news.ycombinator.com/item?id=31362321
I owe the great arc of my life to that program.
Your memory betrays you: QuickBasic is the version with a compiler. QBasic lacked one, though.
I remember this feeling like a big deal for me back then.
(Or are you exotic-.com cool?)
As for .BAS vs .EXE, I remember it was definitely about .EXE feeling "more real". I mean, I had the Basic interpreter in my computer anyway, and distributing programs wasn't in my mind, so a compiler wasn't really needed... it just felt that an .EXE program I could write was more "like the real deal"!
Hah, same for me. I had no peers who knew programming, only a buddy who mentioned QBasic after I stumbled upon a small BASIC program in a magazine.
I'd spend evenings just going through each successive keyword in the help, trying to figure out what they meant. Didn't help that we only started learning English in school at age 12, so lots of words I didn't understand at age 13.
On the positive side, I think this is what made me so good at reading and understanding documentation, a skill that's been incredibly valuable for me since.
I still used QB4.5 occasionally to bash out a code idea just because it is so easy to get an idea down and running before moving it onto the real deal.
I am still upset that I threw out the hard drive with my side scrolling platforming game. It could do smooth scrolling like Mario on the NES but on a 486 33Mhz. Learning to split and address data sets as is needed would the game changer for me in gaining the speed up to what was needed.
https://specularrealms.com/2021/04/21/strangest-things/
Another QB site well worth the visit is http://petesqbsite.com/ (not mine, despite the similar name).
http://lord.lordlegacy.com/
Gross.
At the time, the quickest way to contact home was to buy a calling card for the onboard satellite phone, which cost something like $5 per minute to use. The alternative was to write a physical letter, and if you were lucky and the person wrote back immediately, that would be about a one month round trip. My little program was free to use, and shortened the round trip to about one day. I can't exaggerate how happy this made my coworkers and bosses.
One day, a particularly enlightened boss sat me down. "Why do you lie to yourself that you want to be in medicine?" "Uh, because I want to be a doctor?" "Stop kidding yourself. You want to work with computers. We both know it." Whoa. It was like a lightning strike. Well, of course I could go to school for that thing which had been my obsessive hobby since I was tiny! Why hadn't I thought of that?!
And so I got out of the Navy, enrolled in comp sci, and here I am today rattling on about it.
Thank you, QBasic. You weren't running on my beloved Amiga, but you were in the right place and time to kick off a career that I've loved every step of the way.
In my crowd, it was well known that you wanted to spend your duty evening inspecting the ship’s kitchens. Make sure the officers’ mess cooks didn’t have too rough of a time and they’d make sure you didn’t leave hungry.
I’ve thought about that. There were so many “what ifs”, you know? At one point I’d been accepted to the US Naval Academy, and I have a hard time imagining how that would have turned out. If it ever gets to the point that someone’s letting me drive a ship, things have gone very wrong in the world. And maybe I might’ve made a good doctor. Who knows? But I was never as driven to do that as I’ve been compelled to learn a language, or write a hobby project to solve some problem, or do the annual Advent of Code, etc.
All said, I wouldn’t change a thing.
In my 60s now. Same.
And in one of life’s funny quirks, I ended up marrying a doctor. She’s as into her work as I am into mine, and she likes that she can tell me work horror stories and I like hearing them. It makes for some interesting dinner table conversation, to be sure!
I was so bummed about the move to AREXX. It was much better in many ways, like interacting with the system or other programs, but not nearly as good for writing actual code.
I guess they got into computers too late in their path (or, maybe, computers got too late for them) and missed the time window to make that their main job.
One of them (he is in medicine, actually) still today write very complex and crazy algorithms in GW Basic that blow up my mind. A true hacker.
I don't know why it hadn't occurred to me before then that maybe, just maybe, I should consider that my favorite hobby was also a nice career path. When my boss (who I profusely thanked later in life) pointed that out to me, I was blown away. I didn't sleep well afterward, at first because I had seen my whole planned future fall apart and re-form in a completely different way, and later because I couldn't wait to get started.
I've never looked back, not for a second. This is what I was meant to do. I love it, I'm good at it, and I've never since wanted to do anything else.
Without Internet, an empty mind is Basic's workshop.
Back then it was you and the computer, and maybe some magazines (well, and maybe BBS'es, but I never got into that). You had time to focus. The only major distraction were games, but then again we have many more today, and ALSO all the distractions of the always connected world.
The advantages today are obvious: every answer at your fingertips, online guides and interactive tutorials aplenty, chat, stackoverflow, no reason to get stuck in your programming journey.
But also, instagram, Facebook, whatsapp, HN...
Classic hangouts at jacobpalm.dk, reviews by Todd Seuss at Data Components.
Halcyon days.
I got my start writing one of the guis that was reviewed by MystikShadows on Pete's QB Site... Making things appear on the screen was so exciting. Now I kinda do the same thing, but with Jetpack Compose in the automotive space.
Big nostalgia hit here.
One day when he was out, I messed with the qbasic source and made his gravity concept be a random number. My coworker's winning streak ended as did his constant nagging to get people to play!
One year I sent a “Happy Christmas” message to all stores on our internal Lotus Notes email system with a hyperlink in the email.
The link would, when clicked, load GORILLA.BAS into Qbasic and run it. The idea was, in my teenage mind, a little Easter Egg to cheer people up around the festive season. Unreal to think that you could just link and run an executable from an email back then!
An hour later I get a frantic call from group IT - I’d forgotten there’s no “exit” button - we now had 100s of stores where all the computers were playing Gorilla, and nobody knew the keyboard shortcut to quit the game.
I think the IT guys had to call every single store that day and tell them how to get out of Gorilla. For whatever reason, I wasn’t fired.
I remember doing a lot of QBasic on the computers in high school and having a blast – first time I ever felt like I really knew what I was doing, and somehow it even made learning by trial and error feel especially rewarding.
https://github.com/Hutsell-Games/civil-war-strategy
https://classicreload.com/civil-war-strategy.html
https://hutsellgames.com/civil-war-strategy/
[EDIT] Here's the 5k lines of code comprising the game, for anyone interested in seeing a formerly-commercial, stand-the-test-of-time example:
https://github.com/Hutsell-Games/civil-war-strategy/blob/mai...
We sat down together for a short while as they showed me thousands of lines of incredibly complex QuickBasic code.
It probably only lasted a short while as the bank upgraded their systems soon after that, but it was impressive to see what could be done with Basic for this time of corporate financial systems.
To this day those guys impressed the heck out of me, and that really caused me to switch from just doing computer repairs to programming.
So to those two English dudes out there, Thanks.
Also all the old platforms either do or soon will live on forever in Javascript/WASM based emulators.
Simply, with QBasic specifically, you got...QBasic.
Yea, it came with a nice help system, but that help system was was a user guide and reference manual. It didn't teach you how to program. It just showed what the arguments to PRINT were. Useful, as a reference.
Outside of the TRS-80, which had a fairly large BASIC tutorial manual, the early 8-Bits had rather poor BASIC documentation. They were combined BASIC reference and user manuals, and not spectacular at either. And they certainly weren't robust computer programming tutorials by any stretch.
The simple point being is that while, yes, early computers came with BASIC, they weren't really set up for someone to actually learn how to program a computer. Anyone wanting to program the computer would need to find another book (or magazine) to learn programming. Even if that book were 101 BASIC Computer Games (which is an excellent mechanic, I learned a lot typing in BASIC programs).
Every computer today comes with a web browser, a web browser that can take them to any of a long list of sites where they can start coding immediately -- whether in Javascript, or even many other languages. If anything, of course, the problem is that the web is "too big", the menu "too large" and an unguided novice can get lost in vast array of choices. I actually pity some poor soul typing "learn javascript" into Google alone.
But, truth is, today, there are even few of those. Few are learning this stuff in a vacuum today.
The modern web is hardly a barrier to someone interested in programming today. The available resources are endless.
QBasic was a wonderful tool. It was beautiful and useful. A very elegant early IDE. Head and shoulders above GWBASIC/BASICA. But, still, stand alone it was incomplete.
Maybe in the US where the TRS-80 was sold but in Europe we had really good manuals with things like the Amstrad CPC.
That led to a lifelong successful career as a programmer and software entrepreneur with no formal schooling in programming, tech or business. In theory, all the info for free on the web should make it even easier to self-teach and bootstrap your way into the industry but I'm not sure it does in practice. Maybe only having one available path to self-instruct was somehow more effective?
Thanks Radio Shack!
Nowadays there is also Powershell which can use the entirety of .NET and of course one can make an .html file and open it in a browser in pretty much any OS.
Something that if found, the average 10 year old would find the sample games in about a minute of clicking around. Gorillas and snake is a must.
I was introduced to the programming language when I visited some family in the Midwest US. I had gone with my cousin to the home of a kid named “Robbie” that lived in a neighbor.
Robbie is what people today would call a, “script kiddie,” and he introduced me to a variety of his “hacking tools,” mIRC, and QBasic. I thought it was the coolest thing I had ever seen.
I spent the rest of my time during that trip in my aunts basement trying to write my own QBasic games and downloading other people’s QBasic projects and trying to modify them.
I began to attempt to write my own Zelda-esque game and was completely baffled by the concept of z-ordering and my giant green square of grass continues to cover my character and flash when I would make the character move around the screen.
It was all an absolutely mess, but it was my introduction to programming, and it changed my life forever. I was absolutely enamored with what I had discovered, and it was the beginning of a lifelong journey of exploration in technology.
Thanks Robbie, wherever you are.
Too bad I lost my childhood programs (along with everything else) when the Chernobyl Virus ( https://en.wikipedia.org/wiki/CIH_(computer_virus) ) messed up my hard drive and I tossed it (no backups of course).
I wonder how many others of "us" are there.
So my files should all still be on that 386. But I do not know if it still runs
I made a backup, on a ZIP disk. Do not know where that went