In the spring of 2025, Robert Robichaud approached me about trying to get a version of Adventure running that had been modified to run on the HP 1000 along with making some customizations to the game.
I had wanted an opportunity to play with an HP 1000 back in the 1980s, but never had the chance. This would give me a reason, albeit 40 years later, to learn the ins and outs of the HP 1000. Challenge accepted!
History of the HP 1000 Version of Adventure
Robert is an Adventure Historian and provides a lot of history to the HP 1000 (a more common model # for the HP-21 MXE) version of this game:
In September, 1978 someone at the Haystack Observatory, M.I.T., going only by the name of “Beasley”, modified Bob Supnik’s Fortran IV port of Adventure to run on an HP-21 MXE system, and in doing so added a couple of new rooms, puzzles and treasures (all in an a tongue-in-cheek “adult” style), bringing the points total up to 385 , thus creating one of the earliest extensions of the original game. After a final edit in February, 1979, this version then seems to have spread widely around to the various facilities using HP1000 series minicomputers, until sometime in the early ’80s another programmer, Tim London, working in London (yes, a guy named London, working in London) for an entity known as UKSL, took it and added several more rooms, items, puzzles and two additional treasures, bringing the points total up to 425. In the meantime, other versions based on the Beasley code were spreading around on these systems, some of which seem to be lost now. By the mid ’80s, the London 425 version had made it back across the pond, where at least two different guys (one at a US Navy facility and one at AT&T) attempted to clean it up and iron out some bugs between around 1985 to 1987. That seems to be the last it was heard of, until a few of these files were preserved and archived around 20 years ago, lying dormant in complete obscurity ever since in a German-based HP file archive, save for one abortive attempt to get something running on a simulator by HP1000 enthusiast Terry Newton a number of years ago.
Aside from the inherent historical interest, figuring out “Beasley”‘s true identity was one of the most fascinating parts of this game preservation project. After striking out on any direct name references at MIT, I started looking up Haystack Observatory-related papers from the ’70s, and noticed that the telescope operator there was named B.G. Leslie. Rolling it around a bit, I figured that Beasley could have been a nickname for that, but all of the papers only used his initials. Testing out various “B” names, I finally hit on something in the MIT Technology Review that mentioned Bruce G. Leslie, a Massachusetts native and MIT graduate, class of ’69. That led me to another Technology Review blurb, which comically synced right up with his game’s “sex, drugs and rock & roll” type of content. From the 3/71 issue, Class of ’69 column:
“The task of writing this monthly column can become most difficult (or perhaps easiest for me) when I don’t have any material or information to Include in It. When Bruce G. Leslie noticed that I had missed the January issue, he sent me the following letter which I reprint here for your entertainment and enlightenment.
‘Last night my monthly Tech Review arrived and I thumbed eagerly to the last page to see what my classmates were up to. Apparently, not much, since the magazine ended with Gail and Mike Marcus. ‘What’s the matter with that secretary of ours?’ I thought. ‘Who the hell is he anyway?’ Suddenly a small blue dwarf emerged from my bedroom and pointed his finger accusingly. I guess you need news, huh? Well, here’s my first installment.
Two days after graduation I arrived eagerly in Pittsburgh to join Westinghouse. After shaving my beard and going straight for six months to fool both my boss and the draft board, I quit in frustration and discovered I had enough money to survive a while without getting up in the morning. Then, while debating once again the draft, the FANTASTIC lottery came along and bestowed upon my birthdate the number 317. I stopped looking for defense work. In fact, I stopped looking for work entirely and drove to Florida, Mardi Gras, and St. Louis. Eventually, I made it back to Boston (home was then New York) and, while on an excursion to Headquarters East, I ran into my undergraduate advisor, Professor Burke. The rest is history.
Oh, you didn’t major in history? I’ll continue. The good professor told me of a job opening at Haystack Observatory, the radiotelescope formerly operated by Lincoln Labs and now a part of the Institute. As an off-shift operator, I still don’t have to get up in the morning and no one hassles me about my beard, long hair, or bells. The eight months I’ve spent there seem shorter than any single month with the M-l Complex. In short, it’s a great life. My hours do put a crimp in my woman-chasing style (I’m still single) but any hours at all would put a crimp on my woman-chasing style. After furnishing my apartment and my car, I’m looking for ways to spend money. I think upgrading my stereo is in order. And I think now I can buy a pair of pliers and crush that dwarf…’
I thank Bruce for his letter and hope that the rest of our classmates will realize that the responsibility for writing this column is a joint project between themselves and myself. Send me a note or card when you get the chance or else that blue dwarf may begin to appear In this column.”
This all seemed too perfect to me, so I went back to the code and finally hit paydirt. In a few of the versions, in addition to the Beasley stuff, there was this:
“THIS IS THE “INIT” SEGMENT FOR THE HP MODIFICATION OF ADVENTURE. MODIFIED BY BGL, HAYSTACK OBSERVATORY. ”
Bingo! “Beasley” = BGL = Bruce G. Leslie, former hippie and longtime engineer/programmer/telescope operator at Haystack Observatory. Final confirmation came when I found these posts from 2013 on a model railroad hobbyist message board, where he had been very active since 2006 as “MisterBeasley”. Another member was posting updates on text adventures he was writing in BASIC on his old Apple II for fun. This prompted several exchanges with Leslie, including these reminiscences:
“Jeffrey, what you’re doing reminds me of the old Adventure game. A friend got me a copy of the original FORTRAN source code for a PDP-11. Since our PDP-11 was not generally available, I ported it over to a Hewlett-Packard HP-1000 system, which had time available. I spent a lot more time modifying the code to run on a different system than I ever did playing the game, but then again, I spend more time doing scenery on my layout than I do running trains, so it should be no surprise.
You are in a maze of twisty little passages, all alike…
Hmmmm…”
“That’s the one. The original “Adventure” was written for a DEC (Digital Equipment Corporation) PDP-11. We had one of those at work, and a friend gave me a copy of Adventure. Back then, these things were passed around for free. There were no licenses, and maybe not even any copyrights. The story I heard was that the authors wrote the game with the intention of using it to study how people approached the problem-solving required.
Being a software geek and an engineer, my approach was simple: It was necessary to take it apart, see how it worked and make it better. So, I took the source code (yes, my friend gave me that, too) and “ported” the program to a different computer, an HP 1000 from Hewlett Packard. Once I did that, a process which taught me a lot about both computers, I added a couple of more rooms and puzzles.
This one silly game, full of trolls, dwarves and giants, led to the computer fantasy world we know today.”
“Wikipedia has a page for the original Adventure game:
http://en.wikipedia.org/wiki/Colossal_Cave_Adventure
The article kicked in another memory. The original author, Will Crowther, was married to Patty Crowther, an astronomy type who worked at the same place I did (Haystack Observatory in Massachusetts) but before my time. She was an avid spelunker, and was credited with finding a link between two cave systems in the Appalachians that made them the largest connected system in the world. It was her diminutive stature that allowed her to squeeze through the maze of twisty little passages and boldly go where no man had gone before.
Yesterday, I had an image in my mind of an explorer with an axe, along with a troll and some of the other adversaries, and the caption “Play Adventure on a computer near you.” I realized that it was the picture on a T-shirt I once owned. It was so long ago, though, that even Google couldn’t find it.”
Earlier posts confirm his identity as Bruce G. Leslie, MIT Class of ’69.
Notes about the HP 1000 Simulation
This post is about Adventure, not getting an HP 1000 running so I will omit most of the several months of trial and error spent trying to learn how to get the HP 1000 running and create working environment system capable of compiling Fortran programs. I will only detail those changes necessary to get the game running.
I am going to provide you with a single zip file that has everything necessary to run the game below, but if you want to learn more about the HP 1000 simulation here are some useful resources:
● HP1000 RTE-6/VM Manuals
https://www.hpmuseum.net/exhibit.php?hwdoc=519
● SimH, the HP 1000 Simulation Tool
https://simh.trailing-edge.com/hp/#Downloads
● The HP1000 SimH Manual
https://opensimh.org/simdocs/hp2100_doc
● The HP 1000 RTE-6/VM Operating System on a Simulated HP Disk Drive:
https://hpmuseum.net/display_item.php?sw=566
If you want to use the HP 1000 O/S supplied by the HP Museum above, you must convert the image to little endian format per the instructions mentioned on the website:
A SIMH command file is included to configure the simulator and boot the disc image. However, note that SIMH requires the disc image to be in little-endian format, whereas the 7920H and HPDrive require big-endian format. Therefore, the supplied image must be byte-swapped before it can be used with SIMH. The Unix “dd” command, e.g., may be used for this:
dd if=RTE-6VM-SYSTEM.U0.7920H.disc of=RTE-6VM-SIMH.U0.7920H.disc conv=swab status=noxfer
● Video of Booting a Real HP 1000
https://www.youtube.com/watch?v=nWJoUVBR9CY
● All HP 1000 Software Products
https://bitsavers.org/bits/HP/HP_1000_software_collection/products/index.html
● If you want to really use RTE-6/VM, you need to use an HP terminal emulator. The command stack (redo) and screen editor both require HP terminals. I imagine other software does as well. If you only intend to run Adventure, you can do without QCTerm.
QCTerm can be found here.
https://www.hpmuseum.net/display_item.php?sw=585
Once QCTerm is installed, and when simh is running, connect to 127.0.0.1, port 1050 with QCTerm. Note that this implementation of the HP 1000 can only support 1 such connection.
● The original source code to this version of Adventure was found here:
https://newton.freehostia.com/net/oldcomp/hpgames/index.html
In the above website, search for “download hpgames.zip”.
This source code was designed to run on an HP 1000 using the RTE-IV O/S (or maybe earlier), and was designed to compile using Fortran IV.
Altering Adventure to Run Under the RTE-6/VM O/S
I found RTE-IV rather difficult to use. It is based on the prior versions of RTE dating back to the 60’s. It is ‘cartridge’ concentric expecting files to be on removable disk cartridges or tape cassette. I spent days having the system corrupt after mounting/dismounting cartridges too often.
While RTE-6/VM can be used in the same manner, it also has a Unix-like shell that supports directories rather than cartridges. I ended up using RTE-6/VM to implement Adventure.
Further, I did not have access to Fortran IV. There was an ‘installed’ version of it in RTE-IV, but I could find no feasible way to move it to RTE-6/VM. This version of RTE-6/VM did not have Fortran 77 installed, but the installation files were present on one of the mounted FMGR cartridges, so I was able to install Fortran 77 to compile Adventure.
To access files in RTE-6’s directory structure all of the I/O calls for RTE-IV’s old FMGR file system had to be replaced with RTE-6’s FMP calls. This was largely a one for one swap. Random Disc access requires a call to FMPSETPOSITION. Finally, FMP I/O is done in bytes, not words so I converted block word lengths to/from byte lengths right before a FMPWRITE or after an FMPREAD.
All of the files for Adventure are in the subdirectory \ADVEN:
#ADVXX Fast data file
#ADVYY common block save file
#ADVZZ Source Data File
ADV01.FTN adven, vocab, bug, misc, rand
ADV03.FTN adv1, more
ADV05.FTN a5t1, vocab, dstry, juggle, move, put, carry, drop, rand, bug
ADV14.ASM str func iposq
ADV15.ASM randm
ADV24.ASM trimq
ADV25.ASM ishft
ADV34.ASM movqq
ADV44.ASM putq
ADV54.ASM jascq
ADV64.ASM lco
ADVEN.MAP link map
ADVEN.RUN executable program file
ADVF4.FTN spek, pspek, rspek, getin, yes, yesx
ADVG4.FTN many modules
ADVX2.FTN adv2
ADVY2.FTN adv3
ALL.LIB all relocatable subroutines
CI.STK command stack (for redo) - a system file
COMPILE.CMD command file that will compile everything
IOF.ASM iof
IRP.ASM irp
LADVEN link command file
LINKIT.CMD command file that will link adven.run
LINKIT.LOD link commands used by linkit.cmd
LINKRET.ASM link
MERGEIT.CIN merge command file to build all.lib
NARG.ASM narg
SUBMIT.TXT contributed library submission form
SUSP.ASM RTE self-suspend routing
^ADVEN original linker cmd file (see submit.txt)
If you wish to recompile the entire source:
CD /ADVEN
COMPILE
Once compiled, the relocatables are linked with the command
LINKIT
I spent hours trying to figure out how to get everything to link. Because overlays are used, every subroutine each overlay needs must be made declared before relocation – no forward references allowed. Even the LINK manual mentions that linking can be a challenge.
I never was actually able to manually link the program. Instead, I put all of the subroutines into a library, ALL.LIB, and that allowed relocation of each overlay to find the externals it needed. LINKIT will create ALL.LIB before calling LINK.
While trying to get Adventure running on Fortran 77, I found several buffer overrun problems.
The O/S assumes file control blocks (IDCB1 and IDCB2) have enough memory allocated based on the number of buffers you use. This caused lots of wasted time trying to understand why the program would just go crazy (due to buffer overruns). Finally, I set both file control blocks to be 144 words (16 words for info + 128 words for a single buffer), then made sure all files were opened with only 1 buffer.
The other problem is how Adventure builds its ‘FAST’ data structure files.
#ADVZZ is the source data file for the game, but the game doesn’t play from this file. Instead, at start up #ADVZZ is read serially and a bunch of data structures are built with pointers referencing a simple random access file, #ADVXX, which contains all of the text.
Rather than build the data structures each time the program is run, on the first run, after #ADVXX and the data structures are built, the program writes all of the data structures to a file, #ADVYY, with a single record containing all of these structures. On subsequent starts, #ADVYY is opened, if present, and the data structures are rebuilt by doing a single read from #ADVYY.
A ‘trick’ is used to make this happen and of course that trick stopped working either because of RTE-6 or Fortran 77.
All of the data structures are kept in Fortran COMMON blocks. The game writer knew the exact length of all of these COMMON blocks and knew which was the first one in memory so he could refer to the first variable in the first COMMON block and then WRITE to #ADVYY to transfer the contents of all of the COMMON blocks to the file.
The order of COMMON blocks changed when I recompiled the program in the RTE-6/Fortran 77 environment. This resulted in bounds violations and buffer overruns when the program attempted to write and read #ADVYY.
For much of testing, I forced the program to rebuild #ADVXX/#ADVYY each time it was started. The game is so fast, this really isn’t a problem.
As I learned more about the game and system, I finally figured out how to see the organization and length of the COMMON blocks. If you peruse the ADVEN.MAP file you will see the COMMON blocks order, location in memory, and length of each block:
Load map:
ADVEN 10012 41. 'OUTERBLOCK'
VOCAB 10063 118.
BUG 10251 47.
...
ABBCM 17706 150. named common
PLACM 20134 551. named common
BLKCM 21203 2. named common
MISCM 21205 872. named common
DCBCM 22755 144. named common
VOCCM 23175 901. named common
MISC2 25002 2636. named common
ALPHS 32116 12. named common
PTXCM 32132 100. named common
TXTCM 32276 258. named common
For this version of RTE, LINK, Fortran the COMMON block ABBCM is the first COMMON block in memory and the length of all of the blocks is 5,626 words. The file is created with a single WRITE (ABB is the first variable in the ABBCM COMMON block):
LEN=FMPWRITE(IDCB1,IERR,ABB,5626*2)
A word of warning regarding this method of writing all COMMON blocks with a single WRITE: While working on this game there was a period of time that the FMP procedures’ global memory block was interspersed with the COMMON blocks. That made using this ‘trick’ impossible as the READ back into COMMON would overwrite the FMP memory corrupting the ability to read/write open files.
In case you want to minimize the number of files to only those absolutely necessary, you can remove everything except #ADVXX, #ADVYY, and ADVEN.RUN.
Those files can be moved to any directory, but they must be in the working directory when you start the program.
Installing the Game
Download the hp1000-adven.zip file found at
https://drive.google.com/file/d/1g9WDHVipAx1Lb5kd4txSkJHoqxcoBWjw/view?usp=drive_link
Unzip into a directory of your choosing. I will be using c:\hp1000-adven.
The new directory should look like this:

Start the DOS box, e.g. CMD.EXE, and CD to the directory you created:
Microsoft Windows [Version 10.0.19045.6093]
© Microsoft Corporation. All rights reserved.
C:\Windows\System32>cd \hp1000-adven
C:\hp1000-adven>
To start the HP 1000 simulation, type HP1000 (you will probably be asked by Windows Defender if you wish to allow access – I suggest you allow or access by QCTerm may fail):
C:\hp1000-adven>hp1000
C:\hp1000-adven>hp2100.exe rte-6vm.sim
HP 2100 simulator V3.12-2 Release 32
Listening on port 1050 (socket 264)
SC Device Interface Description
-- ------ -----------------------------------------------------------
10 (none) 12777A Priority Jumper Card
11 TBG 12539C Time Base Generator Interface
12 DA 12821A Disc Interface
13 MSD 13183B Digital Magnetic Tape Unit Interface Data Channel
14 MSC 13183B Digital Magnetic Tape Unit Interface Command Channel
15 BACI 12966A Buffered Asynchronous Communications Interface
16 TTY 12531C Buffered Teleprinter Interface
17 PTR 12597A-002 Tape Reader Interface
20 PTP 12597A-005 Tape Punch Interface
21 LPT 12845B Line Printer Interface
Booting the system.
The character delete key is BACKSPACE.
The line delete key is DEL.
SET TIME
*TM,2025,253,16,35,30
THE RTE-6/VM SYSTEM IS UP AND RUNNING.
At this moment you are in the 1960’s version of the operating system shell. You need to be in the newer CI shell. Press ENTER to get an asterisk (*) prompt, then type EN,RT and press ENTER two times to get the request to login:
*EN,RT
PLEASE LOG-ON:
The logon id is MANAGER.SYS and the password is HP (case is not significant anywhere on this system):
PLEASE LOG-ON: MANAGER.SYS
PASSWORD ?
SESSION 1 ON 4:41 PM WED., 10 SEPT, 2025
PREVIOUS TOTAL SESSION TIME: 112 HRS., 09 MIN., 47 SEC.
Using stack file CI.STK::2
CI.01>
Now change the directory and start the program:
CI.01> CD /ADVEN
CI.01> ADVEN
Initializing data files and such...
Welcome to Adventure!! Would you like instructions?
>
Suspending the Game
This tip from GSCHMIDL below.
The original HP 1000 Adventure game had a SAVE/RESTORE ability, but I couldn’t get it to function properly. I suspect because the game is now being run on RTE-6/VM.
Even had it worked, it only suspends the process, it doesn’t create a checkpoint file so it doesn’t really help much.
Instead, you can SAVE the entire simulation into a file and just restart the simulation. This is done by using control-break and then the SAVE command:
>S
You are in a 20-foot depression floored with bare dirt. Set into the
dirt is a strong steel grate mounted in concrete. A dry streambed
leads into the depression.
The grate is locked.
>
<<press control-break here>>
Simulation stopped, P: 02040 (JMP 2037)
sim> save SAVE1.DAT
sim> q
Goodbye
To restart the game as it was in SAVE1.DAT, simply start simh (HP2100.exe) manually restore the SAVE file:
c:\hp1000-adven>hp2100.exe
HP 2100 simulator V3.12-2 Release 32
sim> restore save1.dat
Memory size changed: CPU0 = 256KW
Listening on port 1050 (socket 324)
sim> cont
I don't know that word.
>LOOK
Sorry, but I am not allowed to give more detail. I will repeat the
long description of your location.
You are in a 20-foot depression floored with bare dirt. Set into the
dirt is a strong steel grate mounted in concrete. A dry streambed
leads into the depression.
The grate is locked.
>
Terminating the Simulation
The HP manual indicates the system should not simply be shut down while you are in CI – disk structures may be corrupted. To properly exit:
● Exit Adventure with the Quit command if you are still in it.
● At the CI prompt type EX
● Once you see END OF SESSION, type control-E to get simh’s scp prompt.
● Then type Q to quit it
CI.01> EX
Finished
CI.01 REMOVED
SESSION 1 OFF 4:47 PM WED., 10 SEPT, 2025
CONNECT TIME: 00 HRS., 05 MIN., 43 SEC.
CPU USAGE: 00 HRS., 00 MIN., 00 SEC., 30 MS.
CUMULATIVE CONNECT TIME: 112 HRS., 15 MIN., 30 SEC.
END OF SESSION
<<control-E pressed here>>
scp> q
Simulation stopped, P: 02040 (JMP 2037)
Goodbye
C:\hp1000-adven>