About...

QBMikeHawk

What is this page?

This page is dedicated to QuickBASIC programs (especially games, but not only.) I often use interchangeably "QB," "QuickBASIC," and "QBASIC" to refer to that specific language (as opposed to GW-BASIC-era language) knowing full well that "QuickBASIC" and "QBASIC" are two different things (the former used to be a commercial compiler that grew into a replacement for the GW-BASIC interpreter, while the latter is the nerfed free home version without compiler.) I may even refer to BASIC PDS (BASIC Professional Development System, also dubbed QuickBASIC 7.x by some) as "QB" because I don't give a fuck. Call the cops, see if I care. You're not my mom, dad!

Why Neocities?

QBASIC popularity soared with the early internet era, which coincided with the end of the language's lifespan. Back then, many QB programmers would have a website hosted on a free platform like Angelfire or Geocities. As a spiritual successor of Geocities, Neocities seemed period-accurate enough in my opinion.

Why now?

In late 2018, I stumbled upon a handful of QB files I had preserved on an old hard drive. Looking for more over the internet, I realized that most website were now broken or totally wiped out. So I began archiving as much as I could: games, utilities, demos, code samples... the collection (over 2000 games and 400 samples as of now) is planned to be distributed via Torrent (or maybe hosted on archive.org) as soon as everything is properly sorted out. 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?

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 (there were books dedicated to translating various BASIC implementations depending on the target system,) but QB, to me, represents the swan song of BASIC as a language. New implementations like QB64 and FreeBASIC are great and all, but borrowed so much from modern language that it doesn't feel quite the same.

So, 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 slow, 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 dropping 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 at a decent framerate. 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, complicated to understand, and the few programs available would have to be tailored specifically to the needs of the user.

In the mid 60s, frustrated by Fortran, 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 (GW are the initials of Gregory Whitten, who ported many Microsoft programs.)

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 abilities, 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, Microsoft 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 hit the shelves. It was both an interpreter (QBX) and a compiler, featured EMS/XMS native support and some more instructions. Six months later, 7.1 appeared, adding more development tools to the package...

QBASIC (1991-1993)

In 1991, acknowledging that GW-BASIC was getting too old for modern computers (even 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 doubled as a text editor, was called QBASIC 1.0 (the "Q" replacing "Quick" highlights how QBASIC is merely a nerfed QuickBASIC.) With the release of DOS 6.0 in 1993, QBASIC was upgraded one last time to 1.1...

Windows XP

Since the first appearence of Windows, Microsoft worked hard to get steer away from the command-based operating system in favor of a full graphic interface. As new versions of Windows appeared, they did their best to hide the existence of DOS underneath, until the arrival of Windows XP in 2001. When previous versions of Windows were still layered on top of some form of DOS, Windows XP only offered a DOS virtual machine. This pretty much put QBASIC on life support. The arrival of Windows Vista in 2006 pulled the plug for good. Today, either an antique computer running genuine DOS (or a compatible OS,) or an emulator like DOSBox could still run QBASIC programs.

The language call still be found in VBA (VisualBASIC,) which is used by the Microsoft Office package to create macros and complex automatons. While it is a continuation of PDS in its structure, it is also "boxed" inside the Microsoft Office context, which strips BASIC of it's "All-purpose" initial intend. Others versions of VBA still exist, although without interpreter.