Download UndergroundAdventure3.zip (916 KB, for Windows XP and newer)
Current version 3.21 released 6/9/19
In the fall of 1983, flush with cash from my summer job, I was ready to go shopping for a computer. At this point, I had three years of computer and programming experience. My high school had decided to purchase a computer for both administrative use and for teaching. They needed a multi-user system, and chose an IBM “midrange” computer called the System/34, installing it in 1980. A classroom with multiple terminals was set up to teach BASIC and FORTRAN programming. I was enthralled with it and spent untold hours staring into those glowing green screens, learning not just programming but also the ins and outs of the operating system. As it turns out, I built my professional career on that product line. The system I make my living on 35 years later is the direct modern descendant of that IBM computer.
My friend and classmate George Zintak also got hooked. Unlike me, however, Zintak was a goddamned genius. The school hired him to write the report card printing and tuition billing software after he taught himself the S/34 in a few weeks. I remember him, on a lark, writing an Othello program in RPG (a language which, to put it charitably, was ill-suited for game programming). You would play against the computer, with three levels of difficulty, each level increasing the number of moves ahead the computer would calculate. Even today I couldn’t pull off a hack like that.
(Note that I’m using the word “hack” in its original sense, meaning a brilliant feat of coding. The word didn’t take on its negative connotation until many years later.)
Seeing my enthusiasm for computers, my father got me a TRS-80 Model III. I threw myself into BASIC game programming, saving my masterpieces on cassette tape. I wrote a blackjack program that allowed up to four players, with the computer as dealer. (I programmed the dealer to follow Vegas rules right out of Hoyle’s, and I was amazed at how consistently he won.)
My games were not terribly sophisticated, but I had a knack for screen design and user interfaces,
which would serve me well in the business world
The TRS-80 was so primitive that it did not natively support sound, but someone had figured out a way to hack that by connecting a speaker to the cassette port, and writing a program in assembly language to create music and sound effects. I didn’t know assembler, but I was able to reverse-engineer a sound engine from someone else’s program and started using it in my own games. One was a Simon-type pattern matching game using the numeric keypad.
Not exactly a graphical tour de force, but it was fun to play
I was most proud of my Battleship game. I remember writing a formula to translate the player’s input coordinates to the appropriate screen position – it was the first and only time I used algebra in my life. But I had a bug that I couldn’t get past, involving the random positioning of ships on the grid. Ships would occasionally intersect each other, and I simply could not figure out what I was doing wrong.
Battlefleet 5 – Even in 1981, I was concerned about copyright infringement
I brought a printout of my program to school one morning and showed it to Zintak. He looked over my ship placement routine, said “Hmmm” a few times, and then asked if he could take it with him to think it over. At lunchtime he gave me back the printout, having replaced my block of buggy code with three elegant handwritten lines of BASIC. That night I typed in his code, and of course it ran perfectly.
It was from this background of experience that I began planning my first major technology purchase. I would be starting my sophomore year of college in the fall of 1983, and I had some specific requirements for the computer I would take to school with me. I wanted a system with floppy disk drives – cassette storage was a ridiculous hassle. I wanted to be able to use it as a remote terminal to the college mainframe computer, so a modem would be required. And I wanted to be able to use word processing software instead of typing papers.
Obviously I was most familiar with the TRS-80 line of computers. The alternatives available at the time were the Apple II and Commodore 64, which I dismissed as toys. There was one other option that I needed to seriously consider – the IBM Personal Computer, which had debuted in 1981 and had just been updated with the XT model in March 1983.
Immediately after the PC-XT came out, Radio Shack introduced the TRS-80 Model 4. They had addressed nearly all the Model III’s shortcomings. It had a new Z80 processor that was twice as fast as the III, and it came with a positively huge amount of memory – 64K – up from the 16K of the Model III. (Yes, that is “K” as in kilobytes. 65,536 characters.) The Model 4 screen displayed 24 x 80 characters, up from the Model III’s 16 x 64. Other than the fact that the screen was still monochrome, it ran circles around the old model. And it could run in Model III mode for backward compatibility with all my existing software.
Furthermore, Radio Shack announced that the Model 4 would support the CP/M operating system. That clinched the deal for me. CP/M was the most technologically advanced operating system available for microcomputers, and it would future-proof the system in the event that Radio Shack went away or otherwise stopped supporting it. As much as I loved the System/34, I was convinced that IBM was out of its element in the personal computer market and would not last there. So I dropped practically all of my summer earnings – just under $3000 – on a TRS-80 Model 4 plus accessories.
September 1983, proudly displaying my new TRS-80 Model 4 in my dorm room
(Wyckoff Hall, Bradley University)
And you all know how that story turns out. IBM came to completely dominate the personal computer market, crossing over into the business world and complementing its larger systems, and setting the standard for standalone computing for perpetuity. And the TRS-80 became a historical footnote. Oh, and I think Apple is still around. Somewhere.
Nonetheless, the Model 4 served me well through college. I was able to connect with the campus mainframe using my 300-baud acoustic coupler, which saved me lots of trips to the computer center. I had a word processing program called LeScript, and I found an electric daisy-wheel typewriter with a Centronics interface that I was able to plug in to the computer and print out my term papers. It wasn’t fast, but it worked and the end product was indistinguishable from manual typing. Pretty advanced stuff for the time.
And I continued to program when time permitted. I still enjoyed the creative outlet of BASIC programming on my Model 4, since the code I had to write for my computer science minor was soul-suckingly dull.
This brings me, at long last, to the whole point of this post. Around this time, I decided to develop a text adventure program. I had an old TRS-80 BASIC program called “Medieval Adventure” that took place in that time period, with lots of stilted “thee” and “thou” dialog, in which you would explore a castle, solve puzzles, and periodically be attacked by a fire-breathing dragon out of nowhere. It occurred to me that I could use the basic layout of this program as a starting point, change all the location and object descriptions, and create an entirely new game.
I decided to set my game in a sewer underneath a modern-day city. I called it “Underground Adventure.” Many of the objects became gross, inappropriate things. The dragon became a giant, ferocious sewer rat. I thought irreverence and sarcasm would make for a unique game. I admired the wit of other text adventure games like Zork and tried to emulate that as much as I could within the existing framework I was using.
Of course, once I started tweaking the game, I began enhancing the code and adding features. I changed the game from two players alternating turns to a single player. I added routines to save and restore using the disk drives, new commands and puzzles, and some dynamic environment features – aspects that change as you play, like knocking a hole in a wall to allow travel in another direction.
I completed it in September 1984 and moved on to other things. But I would make two technological discoveries in the following years that gave me a chance to revisit the game.
Sometime in 2001 I discovered that some old TRS-80 hobbyists had created emulators that would allow you to run TRS-80 programs on DOS computers. I installed one of them and set about rediscovering all my old TRS-80 stuff. In the process, I found a program called TRSCROSS that could read old TRS-80 floppy disks and translate TRS-80 BASIC code to GW-BASIC, which ran on DOS. It didn’t translate 100% of the old code, but it did enough that I was able to get my old text adventure running under DOS. From there, it was a simple process to convert it to Microsoft QuickBASIC and compile it to create a 16-bit executable version that ran on DOS and Windows 98. This set off another cycle of updates and enhancements, and by fall of 2002, I had a DOS/Windows version that I was happy with. But years later, once I upgraded to Windows 7, the 16-bit code would no longer run.
Then, just a month ago, I discovered QB64, an open-source BASIC development environment that can compile 32- and 64-bit executables from QuickBASIC code, by converting it to C++ under the covers. And I realized that Underground Adventure could be brought back from the dead one more time.
This time, I did almost a complete rewrite, replacing the endless strings of IF-THEN statements with structured code that was far more readable and easier to work with. Then I started adding every feature I’d ever thought of during the previous development cycles, trying to anticipate every possible approach and command the player might use and making sure I handled them correctly. Finally, I rewrote much of the text, embellishing descriptions and details, and greatly increasing the level of sarcasm. And now I’m ready to release it into the world.
I think the main reason this project appeals to me so much is that it’s “Mike in a box” – a program full of smartass remarks that refuses to take itself (or you) seriously. It’s like having me available whenever you want (assuming you want that), even if I’m far away, or after I’m dead and gone, for that matter. The thing I loved most about the movie TRON was the concept that computer programs were digital manifestations of their creators. Underground Adventure is like a miniature version of me. And he’s a little bastard.
Click on the link at the top of this post to download a compressed .zip file of the game, and extract it to a folder on your Windows computer. I hope you enjoy it.
UPDATE: Because I’m such a nice guy, here’s a map.