QBasic was my first programming language. I wrote an "operating system" called QWIN using it when I was 7 years old. It had a fake POST with a rising tone and some atonal beeps followed by a series of unnecessary pauses and prompts before getting to a text-based shell (you read that right - QWIN had no windows) which was a pile of spaghetti driven by IFs and GOTOs with arbitrary labels. I was afraid of GOSUB and loops of all types so the embedded unlicensed Pokemon text adventure was nothing more than a series of fleshed-out decision trees until you reached the end. My screensaver that drew random lines used a static seed for the RNG so it was the same every run. Fun times.
My best good friend still has a copy of it someplace on a floppy disk because we would run it on the computer that he put together out of spare parts on a piece of plywood. Thankfully he has a family and is too busy to dig it up and send it to me so I'm spared the embarrassment that would come with seeing it.
I'm always happy to see projects like this and OHRRPGCE where people did something useful with the language.
This brought me a wave of nostalgia for the old Qbasic "operating system" projects, of which there were many. This site has a lot of reviews and screenshots:
It was a popular style of project. Some even implemented their own programming languages so they could multitask applications written for them by running lines from each app in a round-robin fashion.
Was just about to link this. I was a part of this scene at age thirteen! Was largely how I taught myself fundamentals of programming and how to solve problems. When I'm feeling particularly nostalgic, I'm occasionally tempted to fire up something like DJGPP and finish my childhood dream of making a useful GUI for MS-DOS.
> I'm always happy to see projects like this and OHRRPGCE where people did something useful with the language.
Also still active after 29 years in development :) and even still looks much the same as its MS-DOS days.... so decades of work left to do. Recently ported to modern consoles (for Fighto Fantasy & Axe Cop RPG)!
I hope it didn't take too long for you to discover the wonder of GOSUB -- simulating it with GOTO and IF is a pain! GOSUB is just a single x86 'call' instruction and RETURN a single 'ret' instruction. So simple; a taste of assembly programming without stack frames. I even reimplemented GOSUB/RETURN as macros with assembly in FreeBASIC that way (you could just push to the stack). And putting all your code in a single scope, no locals/globals/arguments, makes coding more "fun".
I wrote a ton of QBasic / QuickBasic code as a kid. Until I got turned-on to Turbo Pascal it was my jam.
Because QBasic would run on versions of Windows NT that had the NTVDM (virtual DOS machine) I used it as a scripting language on early NT systems I supported. Eventually I moved over to VBScript under Windows Scripting Host when it arrived on the scene.
> I used it as a scripting language on early NT systems I supported
Me too! Well, sort of. Between the ages of 14 and 19 I worked as a part-time helpdesk technician. When I started we used a series of bootable floppies with DOS to use Symantec Ghost. If memory serves two floppies were required - the first had DOS and the requisite NIC driver and the second was universal and merely had GHOST.EXE on it. I developed a bootable USB memory stick image comprising all of the NIC drivers along with Ghost and a series of other useful things like a WinPE environment and maaaaaybe a Linux one via loadlin.exe. I ended up making a boot menu/shell for it in QuickBasic.
It was still in use a year or two after I'd moved to doing software engineering professionally. I wonder whether it's sitting in a drawer someplace on the other side of the country. I also wonder how this thread turned into a chronicle of my youthful programming misadventures :-D
I did something very similar as a kid - a bunch of almost like DEMOSCENE stuff (simple line rotations, psetting all over the place, doppler sound effects, etc.) before dropping the user into a TUI with little games, etc.
I remember first reading about the DATA command in the IDE built-in help (what a fantastic resource) and laboriously copying my drawings of monsters on graph paper into lines of comma-delimited ones and zeroes in DATA statements.
Since we had a copy of QuickBasic 4.5 I was able to compile it to an EXE and place it in the AUTOEXEC.BAT - fun times!
Kindred spirits! Me discovering that QuickBasic was able to liberate my proggies (as I called them for a brief stint) from the confines of the editor by compiling them to EXEs was one of the happiest moments of my young computer life.
Hacking EXPLORER.EXE and changing the Start Menu side graphic with Borland Resource Workshop was another notable one.
Love it. One fun hack that I figured out as a kid was that while you couldn't get rid of the mouse in Win9x - you could deliberately create a completely transparent "CUR" file.
Watching an adult try to navigate in Windows with an invisible mouse was like the digital equivalent of using a dowsing rod to find water.
I wanted to share a project I’ve been building for decades The Labyrinth of Time’s Edge, a massive handcrafted text adventure written in QBasic. Yes, QBasic in 2025. The game currently spans over 3,600 interconnected rooms, with unique NPCs, branching pathways, cursed villages, haunted castles, and secrets hidden across an ever-growing world. Every room is written by hand. Every description is crafted to spark the imagination. It’s built to run on the barest of systems, and it will always remain free to download and play. Why QBasic? Because simplicity has power. Modern engines demand assets, shaders, and endless pipelines. QBasic lets me focus on what text adventures do best imagination, atmosphere, and story. My philosophy is to expand outward rather than upward: instead of inflating systems, the Labyrinth grows through new areas, new lore, and new journeys, ensuring it always feels alive and endless.
Inform6 would set these rooms in hours...
Just create a Room class, which is something done in miliseconds (basically
a room with a 'has light' atrribute), and being creating objects like crazy
until the v8 Z-Machine gets exhausted (very difficult as it has been pumped up to great limits).
Also the game would run on PC's, Linux/BSD machines, DOS, Classic Macs, Amiga, Ataris, Android, IOS, OSX, RiscOS... everywhere from 16 bit and up.
QBasic was my first language even though I learned to code in like 2008, because my friends in IRC were trolling me and told me it's the best language to start with. I learned from Pete's QB Site, which is still up and an amazing resource: petesqbsite.com
I learned two things: QBasic, and don't ask good faith questions to script kiddies in the Partyvan IRC
Super cool. Is it specific to QB64 only? I glanced over the source code and see a lot of stuff that doesn't look like it would be compatible with QBASIC / QuickBasic.
When I saw a zip file for a Windows application I was worried it would do that Windows thing and unzip its contents not in subdirectory. I was pleasantly surprised it did not!
Unfortunately, when I start the exe file in DOSBox Staging it only clears the screen, shows me a blinking cursor, and then does not seem to do anything beyond that.
I took a look through the BAS source file - it doesn't appear to be QBASIC source. If it was compiled with QB64 (which it seems to be) then it's not a DOS compatible binary, it'll be a 64-bit PE so unfortunately only runnable on a 64-bit version of Windows.
OP says that they've been at it for decades so my guess would be it started as a QBASIC game but then was later ported over to use QB64 and its modern features.
This is really awesome! Does it allow players to build their own rooms and connect to the main module? I don't know whether QBasic allow this kind of things, though. But maybe QuiakBasic can?
I recently set it up on my Mac, and then on my iPad, so I could get access to the decades worth of Turbo C and Turbo Pascal code I found in my archives.
QBasic was my first programming language. I wrote an "operating system" called QWIN using it when I was 7 years old. It had a fake POST with a rising tone and some atonal beeps followed by a series of unnecessary pauses and prompts before getting to a text-based shell (you read that right - QWIN had no windows) which was a pile of spaghetti driven by IFs and GOTOs with arbitrary labels. I was afraid of GOSUB and loops of all types so the embedded unlicensed Pokemon text adventure was nothing more than a series of fleshed-out decision trees until you reached the end. My screensaver that drew random lines used a static seed for the RNG so it was the same every run. Fun times.
My best good friend still has a copy of it someplace on a floppy disk because we would run it on the computer that he put together out of spare parts on a piece of plywood. Thankfully he has a family and is too busy to dig it up and send it to me so I'm spared the embarrassment that would come with seeing it.
I'm always happy to see projects like this and OHRRPGCE where people did something useful with the language.
This brought me a wave of nostalgia for the old Qbasic "operating system" projects, of which there were many. This site has a lot of reviews and screenshots:
http://qbasicgui.datacomponents.net/
Ans this site has more
http://theguiblog.com/
It was a popular style of project. Some even implemented their own programming languages so they could multitask applications written for them by running lines from each app in a round-robin fashion.
Was just about to link this. I was a part of this scene at age thirteen! Was largely how I taught myself fundamentals of programming and how to solve problems. When I'm feeling particularly nostalgic, I'm occasionally tempted to fire up something like DJGPP and finish my childhood dream of making a useful GUI for MS-DOS.
> I'm always happy to see projects like this and OHRRPGCE where people did something useful with the language.
Also still active after 29 years in development :) and even still looks much the same as its MS-DOS days.... so decades of work left to do. Recently ported to modern consoles (for Fighto Fantasy & Axe Cop RPG)!
I hope it didn't take too long for you to discover the wonder of GOSUB -- simulating it with GOTO and IF is a pain! GOSUB is just a single x86 'call' instruction and RETURN a single 'ret' instruction. So simple; a taste of assembly programming without stack frames. I even reimplemented GOSUB/RETURN as macros with assembly in FreeBASIC that way (you could just push to the stack). And putting all your code in a single scope, no locals/globals/arguments, makes coding more "fun".
I wrote a ton of QBasic / QuickBasic code as a kid. Until I got turned-on to Turbo Pascal it was my jam.
Because QBasic would run on versions of Windows NT that had the NTVDM (virtual DOS machine) I used it as a scripting language on early NT systems I supported. Eventually I moved over to VBScript under Windows Scripting Host when it arrived on the scene.
> I used it as a scripting language on early NT systems I supported
Me too! Well, sort of. Between the ages of 14 and 19 I worked as a part-time helpdesk technician. When I started we used a series of bootable floppies with DOS to use Symantec Ghost. If memory serves two floppies were required - the first had DOS and the requisite NIC driver and the second was universal and merely had GHOST.EXE on it. I developed a bootable USB memory stick image comprising all of the NIC drivers along with Ghost and a series of other useful things like a WinPE environment and maaaaaybe a Linux one via loadlin.exe. I ended up making a boot menu/shell for it in QuickBasic.
It was still in use a year or two after I'd moved to doing software engineering professionally. I wonder whether it's sitting in a drawer someplace on the other side of the country. I also wonder how this thread turned into a chronicle of my youthful programming misadventures :-D
I did something very similar as a kid - a bunch of almost like DEMOSCENE stuff (simple line rotations, psetting all over the place, doppler sound effects, etc.) before dropping the user into a TUI with little games, etc.
I remember first reading about the DATA command in the IDE built-in help (what a fantastic resource) and laboriously copying my drawings of monsters on graph paper into lines of comma-delimited ones and zeroes in DATA statements.
Since we had a copy of QuickBasic 4.5 I was able to compile it to an EXE and place it in the AUTOEXEC.BAT - fun times!
Kindred spirits! Me discovering that QuickBasic was able to liberate my proggies (as I called them for a brief stint) from the confines of the editor by compiling them to EXEs was one of the happiest moments of my young computer life.
Hacking EXPLORER.EXE and changing the Start Menu side graphic with Borland Resource Workshop was another notable one.
Love it. One fun hack that I figured out as a kid was that while you couldn't get rid of the mouse in Win9x - you could deliberately create a completely transparent "CUR" file.
Watching an adult try to navigate in Windows with an invisible mouse was like the digital equivalent of using a dowsing rod to find water.
Wonder if there are any QBasic projects still out there.
Windows 10
I wanted to share a project I’ve been building for decades The Labyrinth of Time’s Edge, a massive handcrafted text adventure written in QBasic. Yes, QBasic in 2025. The game currently spans over 3,600 interconnected rooms, with unique NPCs, branching pathways, cursed villages, haunted castles, and secrets hidden across an ever-growing world. Every room is written by hand. Every description is crafted to spark the imagination. It’s built to run on the barest of systems, and it will always remain free to download and play. Why QBasic? Because simplicity has power. Modern engines demand assets, shaders, and endless pipelines. QBasic lets me focus on what text adventures do best imagination, atmosphere, and story. My philosophy is to expand outward rather than upward: instead of inflating systems, the Labyrinth grows through new areas, new lore, and new journeys, ensuring it always feels alive and endless.
Amazing dedication! QBasic was also my first taste of programming.
I wonder what you'd consider the tradeoffs of QBasic vs something intentionally geared towards IF, like Inform[0]?
[0] https://en.wikipedia.org/wiki/Inform
Inform6 would set these rooms in hours... Just create a Room class, which is something done in miliseconds (basically a room with a 'has light' atrribute), and being creating objects like crazy until the v8 Z-Machine gets exhausted (very difficult as it has been pumped up to great limits).
Also the game would run on PC's, Linux/BSD machines, DOS, Classic Macs, Amiga, Ataris, Android, IOS, OSX, RiscOS... everywhere from 16 bit and up.
Yes! According to this post, someone tried to find the max rooms in Inform 7 and stopped at tens of thousands. Took long to compile (not run) and used a lot of memory, but not an issue. https://intfiction.org/t/i7-realistic-max-number-of-rooms/99...
Fantastic.
I shared your post on twostopbits.com. A site dedicated to retro gaming and computing. Would love to have you share your story over there.
QBasic was my first language even though I learned to code in like 2008, because my friends in IRC were trolling me and told me it's the best language to start with. I learned from Pete's QB Site, which is still up and an amazing resource: petesqbsite.com
I learned two things: QBasic, and don't ask good faith questions to script kiddies in the Partyvan IRC
The website lists “light requirements” for this game: 1Ghz processor, 512 MB of RAM
Not what I expect for a game written in QBasic
I think nowadays most people run DOSbox from a host OS so that is OK. Far less if you run DOS natively or maybe Windows 95 natively.
to the readers under about 25, qbasic was our roblox.
Pico8 and love2d fill the same niche as well.
How much programming features does Roblox have? I still prefer scripting in text files.
> How much programming features does Roblox have?
You can check out Roblox Studio - https://create.roblox.com/landing
And Luau is the scripting language - https://luau.org
Thanks, looks like it can do a lot, no wonder kids love it.
Super cool. Is it specific to QB64 only? I glanced over the source code and see a lot of stuff that doesn't look like it would be compatible with QBASIC / QuickBasic.
When I saw a zip file for a Windows application I was worried it would do that Windows thing and unzip its contents not in subdirectory. I was pleasantly surprised it did not!
Unfortunately, when I start the exe file in DOSBox Staging it only clears the screen, shows me a blinking cursor, and then does not seem to do anything beyond that.
I took a look through the BAS source file - it doesn't appear to be QBASIC source. If it was compiled with QB64 (which it seems to be) then it's not a DOS compatible binary, it'll be a 64-bit PE so unfortunately only runnable on a 64-bit version of Windows.
OP says that they've been at it for decades so my guess would be it started as a QBASIC game but then was later ported over to use QB64 and its modern features.
Strange. The web page mentions it being runnable in DOSBox for non-Windows platforms, but I suppose the author might not have tried that in a while...
This is really awesome! Does it allow players to build their own rooms and connect to the main module? I don't know whether QBasic allow this kind of things, though. But maybe QuiakBasic can?
Ahh, this brings memories - back in the day GORILLAS.BAS was a perfect game, and also a mind blowing piece of code (for a kid, ofc)!
What's a good modern QBasic environment for Mac? I may have an ancient game or 2 in that myself!
If you want an authentic experience (proper interpreter/IDE), one of easiest ways is to get a copy of Quickbasic 4.5 and run in under DOSBox-X [1].
https://dosbox-x.com
https://qb64.com/
UTM with FreeDOS. Works great.
I recently set it up on my Mac, and then on my iPad, so I could get access to the decades worth of Turbo C and Turbo Pascal code I found in my archives.