About...

QBMikeHawk

What is this page?

This page is dedicated to QuickBASIC programs. Oh, by the way, to keep things simple I will often use "QB" or "QuickBASIC" to refer to the language, as it is very different from other BASIC dialects such as GW-BASIC, True BASIC, VisualBASIC, etc. Now, some of you may deliver a good piece of snark such as: ">Implying all code will compile across all versions. But Mike, you complete and utter moron, nobody can be as retarded as to enroll QBASIC, QuickBASIC and PDS under the same banner! Code written in QuickBASIC may not run in QBASIC since COMMAND$ doesn't exist in QBASIC, DIR$ was introduced in PDS, and QBASIC is not even a compiler you absolute fucking idiot." and to this I'll reply: stop being such a pedantic little bitch. I'm attempting to make a distinction in the language. Not the interpreter. Not its version. Not the horse it rode in on. But enough mean words already.

Why Neocities?

A host like Neocities, which is a spiritual successor to Geocities, is period-accurate in my opinion. Plus, I needed something fast. A while back, I began to archive a huge load of QB programs including games, utilities, demos, and code samples. The collection (over 2000 games and 400 samples as of now) is planned to be distributed via Torrent as soon as everything is properly sorted out. I wanted to have a place to share the link when it's done. While a part of me is very well aware it's a stupidly big project that only appeals to a niche audience, I also believe there's both a historical and educational value to these files.

Why QB specifically?

In short, I had to stop somewhere. I first coded in GW-BASIC, but no matter what, I don't have enough nostalgia for that language to ever go back to it (I tried once and it's just too cumbersome.)

Older dialects are interesting because it was the dark ages of computers, but QB, to me, represents the swan song of BASIC. New implementations are great and all, but borrowed so much from modern language that it doesn't feel quite the same.

What happened?

The Internet wasn't what it is today. Accessing dumb free games in the form of Flash/Shockwave games was a luxury because download times were huge, the phone bill would increase with each minute spent on the web, and computers had a hard time running Flash games without lagging anyway. The other alternative was QBASIC, which everybody had on their IBM compatible.

Downloading QBASIC games was easier. Since it attracted many young programmers, it felt like sharing your own creations with your friends. Also, exchanging source code via a phone line was a good continuation of the previous BASIC sharing trend (in the 1970s and 1980s, BASIC listings were published in specialized magazines and retail books, you'd lookup which game you wanted to play and retyped the whole code on your computer.)

I think there's an historical value to these programs because of the very specific lifespan the language had. QB games were soaked in pop culture from that era: from the characters being inspired by popular TV shows or other video games, or the music coming straight from the mid-1990s pop charts. Beside the "time-capsule" aspect, looking into the source code of such programs provides a valuable insight on common rookie mistakes, what problems derived from their core design (or lack thereof) and how they were solved by the programmer.

QB is also as flexible as it is limited, which attracted another different set of programmers: code gurus who wanted a challenge. Have you ever witnessed an anti-aliased, gouraud-shaded three-dimensional teapot spinning around at three frames per second? Painfully slow ray-tracing demos? What about full-screen voxel-based flight simulators and real-time bump mapping? Trust me, it's beautiful.

Anyway, at some point, QB disappeared. Microsoft pulling the curtain on DOS helped a lot, but the way computer evolved while QB remained the same was certainly another factor.

At the end, I remember that many website that were dedicated to QB began to include other dialects such as QB64 and FreeBASIC in order to attract visitors. The truth is, the language died because people stopped using it. Everyone moved on to other hobbies, or left because they felt the end coming.

I also remember when libraries began to spread and an influx of new programmers suddenly appeared. They showed impressive stuff, but they couldn't get their code to run properly. Libraries were both a blessing and a curse, and at the end of the day, it split the community in half. Those were weird times.

Nowadays, QB websites are vanishing, archives are getting corrupted, links are dying. There are still a handful of games available on archive.org, but it's nothing compared to what used to be there... for 1997 alone, I have collected 140 games. Nowadays, I see like one or two new games a year, such as NumJump by Daniel Remar (2017), Santa's Christmas Rescue by Nukem Enterprises (2018), or MegaNoid 2 by Topgun Software (2011)...


History of the "Microsoft Quick BASIC family"

This is not a history of BASIC as a whole, but rather the family tree of the "Microsoft Quick BASIC family"... and it is sketchy as fuck. Overall, consider the version number as a reflection of what the program is capable of, rather than its release date. In short: QuickBASIC (1.0 to 4.5, 1985-1988) was developed as a successor to BASCOM (1982-1985,) a compiler for GW-BASIC. After many improvements, QuickBASIC was rebranded as BASIC PDS (6.0 to 7.1, 1988-1990.) QBASIC (1.0 and 1.1, 1991-1993,) a free stripped-down version of QuickBASIC, was slapped together to succeed the aging GW-BASIC interpreter.

BASIC

The story starts during the dark ages of computers. Back then, there was no proper operating system (no Windows, no Linux, no OSX, no UNIX, and no OS2) and no clear standard (every manufacturer would come up with their own features and specifications.) Computers would be located in administrations, private companies, research centers, schools and libraries, but not so much in home. After all, they were expansive, slow, heavy, hard to understand, and the few programs available would have to be tailored specifically to the needs of the user.

In the mid 60s, professors John Kemeny and Thomas Kurtz came up with a simple language that could be run on-demand via an interpreter. Developed at Dartmouth College, the language was called BASIC for "Beginner's All-purpose Symbolic Instruction Code." The main feature of BASIC is its simplicity. The language is easy to understand, the programmer is sheltered by the interpreter, and it had enough keywords that it could be used to program virtually anything. The language was so successful it birthed many variations and was ported to multiple systems.

GW-BASIC

Thinking they wanted a slice of that cake, Paul Allen and Bill Gates developed a version of BASIC for the (then to be presented) Altair Computer in the mid 70s. By the end of the decade, Allen and Gates, under their new company "Microsoft", began to pump multiple BASIC interpreters for almost every computer in existence. In 1981, they released GW-BASIC for IBM computers.

IBM became a standard for personal computers (it wouldn't be too rare to see the mention "for IBM-compatible" on software and hardware alike.) What's more, these computers offered floppy disk storage, a disk operating system, and plenty of RAM! Now BASIC programs could leave the interpreter box and become their own thing. And thus, in 1982, Microsoft released BASCOM 1.0, a program capable of reading BASIC code and compile it to a COM executable. It wasn't the first BASIC compiler, but it was the best available back then. Improving their compiler, they released a second version in 1985.

QuickBASIC (1985-1988)

Compiled BASIC code was much faster, and so, certain they had something going with BASCOM, Microsoft rebranded the compiler "QuickBASIC" and starting 1986, released new version after new version (2.0 in 1986, 3.0 in early 1987, 4.0 in late 1987...) While version 1.0 was plain and simple BASCOM, subsequent versions introduced much needed improvements; they cleaned the BASIC dialect, added a handful of new instructions, and wrote a new interpreter with a brand new IDE on top of it. Somewhere around that time, they released BASIC 5, which was solely a compiler.

BASIC PDS (1988-1990)

Eager to launch a new product line geared toward professionals, they took QuickBASIC's brand into a new direction. In 1988, they released a definitive version of QuickBASIC in the form of 4.5 and released their new compiler as BASIC 6. The following year, BASIC PDS (Professional Development System) 7.0 hits the shelves. This one is both an interpreter (QBX) and a compiler; it features EMS/XMS native support and some more instructions. Six months later, 7.1 appears, adding more development tools to the package...

QBASIC (1991-1993)

In 1991, acknowledging that GW-BASIC is getting too old for modern computers (well, by early 90s standards,) Microsoft decided to bring a proper successor to their first IBM-compatible BASIC interpreter. To get the job done, they stripped the compiler off of QuickBASIC, slowed the interpreter a bit, removed some keywords, and bundled the final result with DOS 5.0. The free home version of QuickBASIC, which also doubles as a text editor, was called QBASIC 1.0 (the "Q" replacing "Quick" highlights how QBASIC is a nothing but a nerfed QuickBASIC.) With the release of DOS 6.0 in 1993, QBASIC was upgraded one last time to 1.1... it vanished with DOS and stopped being distributed after Windows XP.