Wednesday, 4 November 2026

Preserving a Piece of History: Porting the 1983 ICL Mainframe Game "Quest" to 32-Bit Windows

 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!

Saturday, 24 September 2022

The Adventure V1.1 - It's here... at last


 The Adventure V1.1 - It's here... at last



Finally, after a few months of work ironing out bugs the first playable version of my 1986 game is completed.



There is still a lot to do but the game now works exactly how the 17-year-old me first envisioned it. 

The game uses only text characters for all the graphics, maps, and commands. My long-term goal will be to upgrade the graphics to use bitmaps or ANSI art. 

There are lots of other improvements I want to make to the gameplay, story, and controls so plenty to get my teeth into.

If you would like to have a play then please download it from here and let me know any feedback. The game is an executable file that has no viruses. Please let me know if you have any problems running it.









Monday, 20 June 2022

The Saga Continue ... The Adventure V1.0

 The Saga Continue ... The Adventure V1.0


After approximately 10 months I now have time to finish the first release of 'The Adventure'. A game I wrote in 1986 on an ICL DRS 20 Model 50 minicomputer using Microsoft Basic V1.0

Converting the game to run in a modern Basic Interpreter has been fun. There are lots of changes I had to make and lots more I want to make but the first working version of the game, now written in QuickBasic64 (QB64), is almost complete. Just a few bugs to iron out.

I had to completely document the source code as I had not done this back when I first wrote the code. That was fun tracing variables through the code to see what they were used for and following the game logic again.

The game used no graphics, instead it relies on just the normal character set for anything visual like the top-down map. The map itself I had to recover from a printed listing and check every character manually to ensure I had it all exactly as it was first developed.

Here is the map for reference.


Once I have ironed out the final few bugs then I will release an executable of the game. This will be a version that is faithful to the 1986 final version, warts and all. 

Version 2 of the game will be with optimised code, and improved gameplay and I may see if I can work with Ansi art to display both the map and monsters you meet along the way. 

Watch this space......

A Little Update

 How time flies

At the time of writing, it has been 4 months since my last post. In that time, I have had little time to look at the recreated source code for my adventure game but I have made some progress

I have decided that I did not like myself very much. The code is undocumented and used variable names that are not very descriptive. I can guess what some of them mean but the others will take some working out as I follow the logic through my code.


Documentation

I know I need to document the code and create some flow charts. The trouble is this is the bit I hate the most but it has to be done so I can understand the code again and recreate the game on modern platforms. So, I will break out Visio and get to work and get heavy with the REM statements.


Code Structure

I have certainly learned a lot since 1986. As I look at my code I can see many ways I could do it better, way too much jumping around using GOSUB and RETURN. However back then we could not create subroutines (using Procedure and Functions) that you could call, at least not in the version of BASIC I was using.


What Language?

So I always said I would recreate the game to play exactly as it was back in 1986 but reprogrammed in a modern language. To this end, I have been looking around for modern implementation of the BASIC programming language as a good place to start before I branch out to other languages. 

I have settled on using QuickBasic64 which is open source, backward compatible, and allows many modern features such as calls to windows DLLs and displaying PNG files, etc. 

QB64.org – BASIC for the modern era






Monday, 3 May 2021

Recreating My Adventure Game

 Recreating My Adventure Game from 1986




In the Beginning....


The year is 1986. I was working at the local council in the I.T. department. I was a Youth Training Scheme (YTS) trainee. 

Towards the end of my YTS year, with only a couple of weeks left, my manager had no further work for me so I spent my time working on a computer game. 

The game was a top-down adventure. The player moved around a map finding objects and fighting monsters. The game used only text characters to display everything including the landscape. This was a limitation of the platform. An ICL DRS 20 Model 50 computer.



I completed the game in those two weeks and got it running. I stored the game on an 8-inch floppy disc which may now be lost to time and printed out copies of the listing and the map.


And Flash Forward to Today

I came across a dusty A4 folder on my shelf. I had overlooked this for many years. Opening the folder provided a surprise. My Adventure game listing and map printouts.

The ink was fading so I decided to rescue the code and map. 


Digitising

Digitising the printouts gave me some technical challenges as the prints were on wide carriage printer paper so simply placing them on a flatbed scanner would be difficult and even more awkward would have been piecing together the scans. 

So, I looked for a more modern solution. I have a Samsung Galaxy S20 mobile phone which has a really good camera. I also had the Microsoft Lens app which would allow me to take images and save them to the cloud.

A few minutes later I had them scanned but this was not enough for me. I wanted the actual text in an editable format. So how to convert? 

OCR

OCR or Optical Character Recognition would be my savior. Partially that is.

I played around with some free OCR software however results were very poor so I turned to online OCR services. I first had to edit the images and enhance or darken them to make the characters more legible. 

After a few minutes, I had text files that, while far from perfect, were reasonably close. 

What followed was several hours of checking through the printouts and comparing against the OCR text to finally build a listing in a text file that was 100% accurate to the original and also accurate map Data. Of course, when I say 'several hours' this was actually, due to work family, and other projects spread over several weeks.

So What Next?

So, what should I do with the game? I could leave it to gather digital dust in a corner of my hard drive or I could do something with it.

I really want to do something with it.

I don't have access to the original hardware so I have decided to rewrite the game to run on a modern computer as a faithful recreation. I'm not just satisfied leaving it there though, I also want to enhance the game, improve it and maybe create it on other platforms with graphics.

Target Platforms

Off the top of my head, I want to port the game to the following
  • X86/X64 Windows PC using Visual Basic or modern equivalent using Visual Studio Code
  • COBOL on X86
  • Sinclair ZX81 with classic ZX81 chunky graphics (an opportunity to learn Assembler)
  • Recreate in Minecraft using command blocks for the game logic (an opportunity to learn Java)
  • Visual Basic for Application (VBA) - It may be fun to recreate the game running in a Microsoft Office app such as Excel or Word.
My first job though is to fully understand the code as I was not very kind to myself. I did not provide any comments in the code.

Watch this Space...

More blog posts to come in the future when I have further thoughts, progress to share, or a finished version of the game.....