For over 35 years, I was on a quiet mission: tracking down the files for a text adventure game that had captivated me in the mid-1980s.
That game was Quest. Originally written between the late 1970s and early 1980s by Doug Urquhart, Keith Sheppard, and Jerry McCarthy while working at International Computers Limited (ICL), it was released for free in 1983. It ran on massive hardware of the era—the ICL System 10 Mainframe, and later the System 25 and DRS 20.
My first encounter with it was in 1986 on a DOS machine running Microsoft BASIC 1.0. I loved it so much that I actually printed out a physical copy of the BASIC source code. Little did I know how vital that printout would become decades later.
The Visual Basic 3 Wall
A few years ago, my decades-long search finally paid off. I managed to locate and contact one of the original developers, Doug Urquhart. He kindly emailed me the Windows version of the game.
However, this version brought its own roadblock. It had been written in Visual Basic 3.0.
Because VB3 compiles exclusively to 16-bit Win16 executables, it hits a hard wall on modern computers. Modern 64-bit editions of Windows 10 and 11 have completely stripped out the 16-bit subsystem (NTVDM), meaning this classic game was completely unplayable on modern hardware without setting up complex emulators or virtual machines running Windows 3.1 or Windows 98.
With Doug's permission, I uploaded the original 16-bit files to the Interactive Fiction Archive to ensure they were digitally preserved. But I wanted the game to be accessible to anyone, right out of the box.
Decompiling and Rewriting the Code
Using my 1986 source code printout as a guide, I set out to bridge a 40-year architectural gap. I used a legacy 16-bit executable decompiler to extract the forms and raw project architecture from the VB3 binary.
From there, the real puzzle began:
- Variable Reconstruction: The original VB3 compiler stripped away meaningful variable names, replacing them with compiler-generated pseudonyms. I had to sit down with my printed 1986 BASIC listing and manually map the logic back together to restore the true variable names.
- Type Conflicts: Early BASIC variants allowed developers to use the exact same name for both a String and an Integer variable simultaneously. Modern compilers absolutely forbid this, requiring a major variable renaming effort to resolve code conflicts.
- Modernizing the UI: Once the logic was stabilized and ported into a 32-bit Visual Basic 6 environment, I added a few quality-of-life upgrades. I integrated a text justification feature, cleaned up the main interface layout, and built a custom debug window that tracks data records in real-time to make any future ports to modern languages much easier.
Play it Today
The result is a native 32-bit executable that installs and runs perfectly on modern Windows environments without needing an emulator.
If you want to explore the source code, check out the development history, or download the installer to play this piece of mainframe history yourself, the entire project is open-source and publicly hosted.
Visit the project here: Quest-VB6 GitHub Repository
Note on Installation: If you download the installer, make sure to install it to a root directory like
C:\Quest rather than Program Files, as modern Windows security permissions can prevent the game from reading and writing its legacy data files properly!