Hacker News new | past | comments | ask | show | jobs | submit login
All about QBasic and QuickBasic (qbasic.net)
214 points by susam on Aug 4, 2022 | hide | past | favorite | 148 comments



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.


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.

All said, I wouldn’t change a thing.


> A good day is one where I get to write lots of code.

In my 60s now. Same.


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.


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.


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.


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 :-)


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.


This is an awesome story. One of the reasons why I enjoy browsing the comments section here so much. Thank you for sharing!


You’re welcome! It was a happy memory to share.


What an evocative story. I watched it in my head like a movie. The moment when you learned you wanted to be a programmer was epic.


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.


Do you ever miss medicine?


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!


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.

Thanks Robbie, wherever you are.


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.

I wonder how many others of "us" are there.


I also started at 8 years old with QBASIC. But without childhood friend or Chernobyl

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


For HN meets missed connections, Robbie please reply here.... :)


My dad (who's an architect but learned a little bit of programming on the university in the 80s programming on punch-cards) wrote a few simple QBasic programs with basic math and English vocabulary excercises for me when I started primary school. When I was 13 or so I found them again and ask my dad to explain it to me how it works. He did not remember much, but he showed me a few commands he remembered and that's when my world turned up-side down. I learned everything else myself from the built-in documentation (although I did not understand big portion of what the docs said) and spent almost all my time at the computer, writing stupid small programs in QBasic. The ultimate program I wrote was a silly Windows 95 clone with the Start menu, calculator and clock programs built in. At some point the code was too big that it wasn't possible to run it, because there wasn't enough memory left after QBasic loaded the source code. Worth saying that the computer had 4MB RAM, though, so it was probably just a few thousand LoCs.

From QBasic I went to Delphi, did a detour to PHP/HTML during high school and ended up at C++ some 14 years ago. Today I'm a SSE and I still love programming and everything about computers. Seeing this post (and all the cool stories in the comments) brough a big nostalgia hit - all those hours spent in front of my dad's Compaq Contura just writing one QBasic program after another (and playing Commander Keen, of course!)...there's a big box of flopp disks at my parent's house, I suddenly feel a big urge to go buy a floppy drive and see if any of my masterpieces have survived...


QBasic was a DOS interpreter, so the 4MB of RAM didn't matter. DOS couldn't see more than 640kB of RAM, and I am not sure if QBasic even used all of that.


Worse, QBasic was limited to one segment of 64k, or what Borland called the "small memory model." If the code and inline data was larger it couldn't run.

Many programs would inline machine code and jump to it to get around limitations like that.


I thought it might be, but I wasn't sure...

Mind you, in my first job, we had a full professional system, written in GWBASIC.

It was 300-400kB of code, in modules of under 64kB each. There was one big module that set up all the variables, then it loaded the other ones in on top of itself. Variables stayed in memory, so there was no need to explicitly pass values between modules.

All very modular, with a big block of REM statements detailing what would be found in memory, under what names, etc.

It was fast, on a PC-XT class machine with a hard disk. It ran on anything, even with no memory management. The runtime was included with DOS, so the company didn't need to include anything extra.

When my employers started out, they were very small and a copy of QuickBASIC would have cost too much.

This app cost many hundreds of pounds in the mid-1980s. By the end it was £200-£300, bespoke customised for every client.

My boss wrote it and really wanted to modernize it. His boss wouldn't let him. In the end, he quit and started his own company.

I quit that job and went to work for my former boss, who rewrote it in QB4, removing all the line numbers and making it one big monolithic structured app, compiled.

But TBH that didn't add any functionality, made on-the-fly patching much harder, and meant it was up against full-fledged professional apps.

(The niche was that I lived on the Isle of Man, which has unique tax laws. British payroll apps are no use; American ones, worse. But expensive pro-grade apps were very customisable and could be made to fit.)

CP/M only handled 64kB of RAM and that needed to fit the OS too. Lots of business software ran in that space.

TL;DR: you can (or could) write useful professional apps in an interpreter with a 64 kB code+data size limit. Big ones, if you're rigorous about modularity.


In 1992, our school introduced computers. I think we were the 3rd school in that tiny state in the corner of India. I have a story of how I did an uprising so that almost no one would want to do computers, leaving only a few of us to have all six computers to ourselves. But that is the story for another day.

In the winter of 1993, I learned QBasic enough to write a tiny program (game). I used graph paper to calculate the position of a heart-shaped object on a robot-like figure. You move the cursors to shoot (like Space Invaders or something like that). When hitting the heart, it types out a name (which I asked when starting the gameplay).

I had gotten my friends to arrange for "the girl" to play the game in a fateful extra class while we were preparing for our upcoming state-level 10th examination.

Yes, she did play the game after I taught her how to, and instead of just her name, it said something like "Love you, NAME." She became my first girlfriend, my first kiss. I think the whole school knew that.

Now, we have all grown up, with families, and the whole Class of '93 is still in a tiny group communicating regularly. Everyone still teases me to this day, including my wife, who is good friends with all the girls from our Class.


They were teaching QBasic right up to 2013 at least!


And many schools in India were notorious for teaching either Qbasic or Turbo Pascal/Turbo C++ in the MS-DOS environment very recently or even to this day. Sometimes resorting to DosBox to make them usable on modern hardware.

(Is that better or worse than having students use an Electron- and JavaScript-based free IDE that will run like a dog even on the fastest hardware around? Dunno, really.)


> Is that better or worse

1000x better, and I am damn serious.


I could unpack each of those orders of magnitude and explain why you're right, but I skipped straight to the upvote.


Learning can come from unexpected directions. With my base of GWBasic, QBasic and Turbo Pascal I tried and failed learning C more than once. (Admittedly, most attempts where trying to learn C and win32 API at the same time, that might have been a bit much at once - particularly using the exotic GCC ports of the day). Then I spent a year or two diving into POV-ray SDL, with its heavily C-preprocessor inspired syntax. After that, C came surprisingly easy.


My learning path was very similar.


StackOverflow still gets conio.h not found questions.


My dirty little secret involved QB45. I local shoe chain had their POS running on true-blue IBM PCs with BASICA, the ROM-based BASIC that was only on real IBM machines. The code had the “protection” bit set so mere mortals couldn’t alter the code. The chain was looking to get out of the IBM-only requirement and also wanted some minor code tweaks.

So I “unprotected” the BASICA program, made the requested tweaks, and compiled the whole thing with QB45. They now had a stand-along executable that could run on any DOS clone machine. And since it was compiled, performance jumped, it was super fast!

Took me 15 minutes, client was thrilled, I charged them $5,000. Easiest money I ever made.

No, I don’t feel guilty about it. Was it difficult? Not for me. I just so happened to know where to hit the hammer while no one else did.


> Took me 15 minutes

Wow, you did all that in your 15 minutes of ever using a computer? You must be some sort of genius!

Actually those "took me X minutes" jobs are only possible because of years of prior learning.

You should not feel bad about charging for your years of experience resulting in expertise.

If it was so easy then everyone would be doing it on Fiverr for 15 bucks.


I'm still coding now, but some of my most memorable adventures were with QuickBasic in the early 1990s, when I knew essentially nothing.

My first one was fixing a flaky TSR "new mail" notifier that came with Microsoft Courier, a pre-cursor to Microsoft mail. I decided to write a new one which "merely" involved reverse-engineering what memory location to check to know that there is new mail, and then reverse-engineering the memory location to update to put the info on screen in the same place with the same colors. It was a drop-in replacement TSR that looked and behaved exactly like the original except it worked properly. (I made generous use of Norton Utilities to figure things out.) To this day I don't know how I came up with that approach, or why I thought I would be successful, or how I actually WAS successful. Yet hundreds of people used it for years with no issues.

The other memorable app was a pop-up TSR chat app for NetWare. I sold that as shareware and made at least $500 selling it for $35 IIRC. That was the last time I made any real money from software I wrote for myself :)

My code was terrible, and bug-ridden (like all the best code), but I was able to be very productive with QuickBasic and it heightened my sense that with a little effort you could do almost anything with computers.


QBasic was my second, but first real, introduction to programming (first being VIC BASIC). I was told not to press escape (at some DOS menu manager), but I did. Who knows how I wound up at QBasic. At some point I impressed some teenagers with a rainbow line on their full color screen, I was myself impressed with the experience: there was terminate-stay-resident called 'phix' that emulated VGA on a monochrome. phix broke the qbasic editor (blank screen), so I would have to make changes and then reboot (to clear the TSR) to try them out on my home machine.

One thing I managed to do was to delete the entire source for NIBBLES.BAS (while the screen was blank due to phix), which my sister and I genuinely enjoyed playing. I just looked it up[1] and it was a mere 700 lines of quality BASIC.

GORILLAS.BAS is one of my influential programs, and I want to write a competent spiritual successor to it one day.

Edit: MONEY.BAS was also pretty awesome. I was too young to understand the idea behind it, but the ncurses-style UI and the random star background were great.

Edit 2: I eventually wrote a tomagotchi game. It had a pretty awesome ASCII art intro sequence, but was plagued by a mistake of mine. `INKEY$` waits for an input key each time it was read, so an if-elseif-elseif-etc. would result in a kind of race condition. My instruction on the screen was essentially to "hold a key until it works." I eventually got hold of that machine 20+ years later and fixed the bug.

[1]: https://github.com/tangentstorm/tangentlabs/blob/master/qbas...


The QBasic IDE did have a monochrome mode, like most TUI programs in the MS-DOS environment. It was selected by a command-line switch.


So many of us made a whole career out of “don’t touch that? Huh. I wonder what happens if I touch it?”, haven’t we?


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.


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.


I know. Pythonista gets really close to that experience on an iPhone, but yea it’s not included in the OS.


I'm just going to disagree.

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?

Thanks Radio Shack!


> early 8-Bits had rather poor BASIC documentation

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 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


At least basic HTML and Javascript can be spun up with little more than a text editor and a modern browser.

Also all the old platforms either do or soon will live on forever in Javascript/WASM based emulators.


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).


It's a little terrifying to see some QBasic zines I wrote nearly 25 years ago on that site.


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.


Spent uncountable hours on Pete's site over the years. Really great place.


There's a BASIC discord as well https://discord.gg/4FQyHxw6


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.

I owe the great arc of my life to that program.


> 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


> Later on I found the quickbasic version that let you compile executable (it may have been VB 1.0 IIRC)

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.


Are you .exe cool, or just .bas cool?

(Or are you exotic-.com cool?)


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!


oh man, that reminds me of typing .com programs from magazine listings into DEBUG.EXE


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.


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.

Big nostalgia hit here.


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.


That's a great story, haha. Thank you for sharing.


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!


A lot of those books are free to see online now: https://usborne.com/us/books/computer-and-coding-books I absolutely love the aesthetic and contents of these things.


I was already moving into Turbo Pascal after having been through the 8-bit computers, GW-BASIC and Turbo Basic (my entry into Borland family), so never got into playing around that much into QBasic, other that when bored in foreign computers.

However I always felt it was a bit unfortunate that Microsoft never invested into QuickBasic the same way as they did with their C products, even with VB later on, it had to wait until version 6 to get a proper AOT compiler, and even then, only to be eventually replaced by .NET.

Somehow a company created on the BASIC wave seems to always have had a vocal minority (internally) that always messed up the products that helped the masses to program with more productive languages (nowadays still present in WinDev vs DevDiv politics).


I did my first (and only :-)) commercial program with Turbo Basic. I was pretty young so I didn't understand that Turbo Pascal would have been a better idea, but anyway, Turbo Basic was just a massive step ahead when you were coming from GW Basic. The editor was quite good and the speed/compilation time were just form the future. I was blown away. And there were no line numbers (a huge progress at that time !) ) :-)


Yes, my entry into Turbo Basic was helped by this book,

https://www.amazon.com/Using-Turbo-BASIC-M-James/dp/18505809...

One reason I get sour with C, is because I was tainted with having the opportunity to do system level stuff Turbo Basic and Turbo Pascal languages and environments before getting acquainted with C.

So I learned to use a lighter before having to deal with creating fire with sticks, thanks Borland.


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.


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.


QB64 is a reimplementation of the language with all kinds of modern additions like networking and high-res graphics.

https://qb64.com/


BBC Basic for SDL seems relevant, with praise for it's examples.

https://github.com/rtrussell/BBCSDL

https://news.ycombinator.com/item?id=31362321


Never heard of this one before, looks great!


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.


It's hard not to take advice from someone with such a flamboyant on topic nickname!


I'm going to try this out! - both the theme and zen mode.


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.


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.

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...


Some of my best memories from childhood were waking up early on a Saturday morning and hacking in that blue and white screen in a silent house for a couple hours before my family woke up. No Internet yet, so I got this book[1] for my 10th birthday and went through it cover-to-cover probably several times.

Like so many here, QBasic literally altered the course of my life.

Does anyone here remember that feeling the first time you realized the power at your disposal?

[1] https://www.amazon.com/Mastering-Quickbasic-Rita-Belserene/d...


Nostalgia! I used to love playing with QBasic. Me and a few friends would sit in the computer lab at lunch when we were maybe 11/12 and play with it, which was weird as I was the only one actually interested in programming.

I remember being very proud of reverse engineering how BMP (I think?) files worked (pre internet days!) and writing a program that could (very slowly) render them in QBasic. There was a guy a couple of years above us who fancied himself as a bit of a hacker (I remember he edited the boot sector of the library computers to infinitely reboot…) would make proper “demo scene” style programs in QBasic which was pretty impressive, I wonder what became of him!

Would be kinda fun to go back and play with it with a deep understanding of programming, and see what is actually possible if you really understand it.


As a kid I had to learn at least a little Basic (mainly GWbasic), so I could load and play games. But things really took off when a cousin borrowed me his "Qbasic for beginners" book.

Code printed out in a popular hobby science magazine helped a lot too. I remember manually typing over whole pages full of unintelligible poke commands and how those would work at best 30% of the time.

I think it was the ability to directly tinker with the values and formulas in the games that I loved to play that shaped the coding style I'm still using to this day. Often I'm not exactly sure why I'm trying something, other than that it just "feels like it might be the right thing to do". And about 60% of the time it turns out I'm right.


I remember as a 8-9 year old kid going to the library and finding a book about creating games in QBasic. I Spent most of the summer just copy and pasting the code from the book in hope of it working. As I didn't speak English it was very hard for me to debug, so any error just meant I had to start all over. Only a few games worked, but when it happened it was like magic.


I am still angry that the .NET team basically gave up on VisualBasic. Not that VB is such a good "variant" but it is definitely more beginner friendly than F# or C#.


I am there with you, nowadays they could rename CLR into C# Language Runtime.

Even F#, I am not really sure how long they will keep investing into it, as they have pivoted into trying to push F# for data science, while at the same time hired Guido and are driving the efforts to make CPython faster, and keep adding F# features to C# as well.

The irony that we get more options on the JVM side than on the CLR, versus what each one originally stood for.


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.

So to those two English dudes out there, Thanks.


I spent countless hours learning to code using QBasic and building games from type-in code books I founds in libraries. I wanted to re-create this experience so built my own learn-to-code platform, https://akedo.app, inspired by the ease of getting started with QBasic.

One of the first examples I built was a clone of Nibbles in only 120 lines of code which you can play at https://akedo.app/play?g=8eolqpn_fk-kr1TLi_WmKw

I'll need to come up with a version of Gorillas next!


Yeah, good times!

Also worth visiting:

https://games.phatcode.net/

http://petesqbsite.com/

I was 11 when I discovered QBasic. In the years after that I made a few platform games (Martian Venture, Shotgun Sam) and a pixel art program, and a whole slew of unfinished things. Never could stop programming after that.


When I started out, QBasic was instrumental in getting me interested in programming (other tools would not do it), because it was easy, all inclusive, graphics related, immediate, and well documented.


I keep QBasic installed on DOSBox on every machine I own just to know it’s there. Structured programming, the immediate window, an interactive debugger, built-in help, it all combined into a fantastically safe and productive environment for someone starting out. It feels like there isn’t a good equivalent today, kids have to work in weird stuff like Scratch or piece together docs, YouTube videos, editors and compilers/runtimes in a way that distracts from the essence of learning code. I’ve played with Gambas with my son and that’s a nice Visual Basic-like integrated environment. There are some nice apps that just give you a Python window and a run button but aren’t as slick overall as QBasic. We’ll probably end up diving all the way into Roblox studio because that’s very motivating at least, if very complex for a beginner. Maybe Swift playgrounds is the right approach, I’d love to hear what others find.


The FreePascal project maintains a clone of the Turbo Pascal text-mode IDE that will run and interoperate w/ modern environments. But there isn't much of an equivalent even for C/C++, let alone BASIC, or other modern languages for that matter. Vim and Emacs just don't support the same kind of novice-friendly DX.


QB64 is almost a faithful recreation of QBasic with a bunch of extensions, though i'm not sure if it has a QBasic-like "live" editing feature (where you can pause the program while it is running, run functions or modify the code and then continue from there).


Just found out about it. Apparently it transpiles the BASIC code into C++, which sounds a bit hacky TBH, given how crazy the semantics of C++ can be. They do have an impressive graphical recreation of the old text-mode IDE.


Yes there is, C++ Builder. Which everyone else failed to reproduce to this day.


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.

But also, instagram, Facebook, whatsapp, HN...


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.

- 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.


> 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."


Mallard Basic and QBasic is how I got into programming. I'm glad people still have nostalgia for QBasic. Even by today's standards I think it's impressive how QBasic was a somewhat complete IDE with a built-in help menu you would just get with typing qbasic.exe.

In mid-90s our home had an Amstrad PCW8256 which had CP/M and something called "Mallard Basic". It was the first computer I ever used.

You wrote code by typing a line number and then the code you wanted on that line.

The local library had a little instruction manual for how to program and had some example programs. I was like 6 years old and typing a lot was hard for me so I had my mom type in the example programs from the manual that I then tweaked.

I didn't know it at the time but that particular computer was already hopelessly outdated by the time we had it. (IIRC it was from late 80s, and the year was somewhere around 1995-1996).

Later we got a Windows 3.11 machine with some 486 and it had QBasic. I had a lot of fun reading and tweaking NIBBLES.BAS and GORILLAS.BAS. Especially to make the bananas in gorillas explode in much larger explosion because for a kid like myself the bigger the explosion the more funny that is.

Fast forward 20 years coding my entire life and I got master's degree in computer science and immigrated to USA to work in tech. Thanks Basic!


I learned programming quite late, starting in university. But my first programming experience was very early as a child when my dad brought home a 286 laptop (!) and showed me how to write simple programs in QBasic. He showed me how to do conditional branching (IF ELSE), but for loops he told me to read the documentation. I wrote a little text adventure just with IF ELSE, never read the documentation and lost interest. If I would have just followed through ...


QBasic was my first language, I started learning it from a book my parents got me when I was around 4yo, and it lead me into VB6 when I was around 10yo, which lead me to basically my career these days. Learning the basics of how computers work and programming them to do things was an incredible thing as a child, it really emboldened me and made me feel in control if myself when I didn’t feel that way about what was happening around me.


> QBasic was my first language, I started learning it from a book my parents got me when I was around 4yo

You were learning to write in modern BASIC without line numbers at that age? That's really interesting actually, not something I've heard about before.


Growing up, I would visit my grandma, who had free dialup internet because she was a school teacher (this was early 90s), and would print out the help docs for qbasic so I could bring them home to use on my non-internet connected computer.

I managed to build a breakout style game a few other things I can’t remember.

This lead to me learning html and then unlocked my whole career basically.


I remember seeing QBasic after getting introduced to GWBasic previous year and getting so excited that every line didn't need to have line numbers as part of source.My first reaction was oh - my gotos won't break all the time anymore :)

It is sometimes hard to imagine how much the DX has evolved over the years.


Like many others, QBasic plus some library books comprised my start to programming and totally changed my life. A few of my most vivid childhood memories were sitting in a closet with a humming MS-DOS computer, smelling hot plastic and finessing how to use SCREEN 7 so I could place my game's background on one page and sprites on another. A huge "aha" moment was when I learned what arrays were, as they allowed me to use the same "enemy sprite" logic to place multiple enemies on the screen at once without requiring separate code. Another was when I devised and designed my own Zelda-like tile system so I could draw various map elements once and then encode each game screen as a simple string of letters. Nothing but love for those days and how they got me comfortable messing with code.


I wrote a keyboard-driven drawing program that IIRC wound up being self-replicating, appending a string of DRAW commands to itself so each saved drawing could rebuild itself and continue drawing.

I also remember how impressed I was when I first saw a program bouncing 3d shapes around the screen instead of my 2d lines.


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.. :-)




Brilliant, it even has GORILLAS.BAS and NIBBLES.BAS :)


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.


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.

https://specularrealms.com/2021/04/21/strangest-things/


Your QB64 link at the bottom needs to change. It's no longer the .org one.


I picked QBASIC up as a kid and made my first game (a quiz), that was my first eureka moment. Pretty cool now that I think of it.


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!


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.


This brings back so many fond memories. Author of Millennium OS here :) http://www.datacomponents.net/old/mos.html


I got QuickBasic from the warez section of the BBS I often dialed into when I was younger. I also played a lot of Lord.


Whixh door was that? I loved Operation Overkill, TW2002, Barren Realms Elite, LOD.. I'm not placing Lord?


Legend of the red dragon

http://lord.lordlegacy.com/


My interest in graphics started with this game https://en.wikipedia.org/wiki/Gorillas_(video_game) Since it was a .bas you could modify it and see how it worked.


woooow this brings me back. This is where it all started for me. Before I ever had my own computer.


Ahhh, my first lines of code were BASIC <3

Btw, slightly related, if you want to do some BASIC from a Scala context, check this out: https://github.com/tpolecat/basic-dsl


I remember being so fascinated by GIMI, an "OS" written in QBasic: http://qbasicgui.datacomponents.net/gui.php?id=24


VPlanet is another great glimpse in time at QBasic and the game dev community it had in the late 90s early 2000s: http://vplanet.petesqbsite.com/


I love BASIC. It’s great. Love it on MSDOS, the ZX81, the C64, the Apple ][… everywhere.


There are some shitty BASICs.

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).


Don't be confused. Easy to learn does not equal easy to master. This applies to all programming languages.

Basic is a great programming language, it is just such a shame that it has reputation as a language used by novices and beginners.


I was like oh god is Fabrice Bellard dominating yet another sector


QBasic was my first. When I was eight, a man at a bookstore programming section suggested me “Easy Programming With QBasic” and it was perfect.


There was also PDS Basic which allowed to compile into executables


QBasic and Python 3.14 are almost indistinguishable.


Seriously? The languages couldn't be more different, and the complex semantics of Python makes for lots of pitfalls for the unwary novice to fall into, even in foundational language features where BASIC-like languages are generally quite simple and transparent.


> Python 3.14

https://github.com/GorillaStack/gorillas/blob/master/gorilla...

The syntax is more Ruby/Lua like but with the improvements that Python is making in typing, it looks like it could get there in three minor releases.


I'm still looking for a copy of Tunnel Striker!


I still use Power Basic Console Compiler.


A lovely dose of nostalgia right there.


Ew, BASIC.

Gross.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: