Wander (1974) — a lost mainframe game is found!

1I really have no right to take credit for this, because although I must have read about Wander in the Inform Designer’s Manual some years ago, it only really registered with me after I saw a list of lost mainframe games in Jason Dyer’s recent blogpost.

Wander was probably the first computer game that is recognisable as what came to be known as a “text adventure” (or “interactive fiction”) – pre-dating even ADVENT (a.k.a. Colossal Cave) by Crowther and Woods!

But Wander was more than that because it seems to have been designed to be a tool to allow users to create “non-deterministic fantasy stories”[1] of their own. So perhaps it would be more accurate to say that Wander was in fact the earliest known precursor to modern interactive-fiction development-systems like Inform 7!

Wander was thought to be lost, presumably languishing on one or more of the slowly decaying tape-reels of mainframe history. But Jason’s description of Wander on his blog was so intriguing, and the thought that there might still be a chance of finding it again was so tantalising, that I felt I just had to try to get in touch with the original author and programmer, Peter Langston – which proved to be remarkably easy to do.

A few emails later, and Peter, who is incredibly obliging, sent me a file named “Wander.tgz”, which contained source code and documentation for a 1980s release of Wander, which he had extracted from archived emails and then massaged into a form that would be usable today.

Sure enough, after a little tweaking, necessitated by the quirks of the ageing version of Mac OS X that I insist on using for some strange reason, I successfully compiled and ran the code and was thrilled to see the following text scrolling up my Terminal window:

$ ./Wander
Just Imagine …

You are traveling as  First Under-secretary to the Ambassador for the   Corps   Diplomatique  Terrestrienne,  (CDT).   Your  direct superior, Mr. Magnan, has managed to duck out of the  action  and leave   you   as  sole  assistant  to  his  superior,  Ambassador Pouncetrifle.  (The Ambassador is a classic bungler and would, if left on his own, mess things up badly.)

You have been sent to Aldebaran III where you  are  to  avert  an uprising against Terran nationals expected at the end of April.

During your trip you  were  able  to  peruse  the  ship’s  meager library  and  make  a  few  notes  on the history, life-forms and society of Aldebaran III, but much of Aldebaran culture is  still a mystery.

It is the middle of the night; the ship  on which you arrived has just departed from the small spaceport which you find to be windy and deserted.

wrdadd(ask, 0, 0, 0) returns 38 lastrw=38
which(“ask”) = 38
wrdadd(question, 38, 0, 0) returns 39 lastrw=38
which(“question”) = 38

I’ve omitted several more lines’ worth of diagnostic messages, which seemed to be running through the nouns and verbs in the “a3” demo game file that Peter sent to me along with the source code. The transcript now resumes (with the commands I typed in in bold):

You’re in the Aldebaran III spaceport. An electrified chain link fence surrounds the area with gates leading west and south.

There is a credit card here.
take credit card
Done
Your account has 50 credits left.
(You can type balance any time to find current status).
Aldebaran III Spaceport
balance
Your account holds 50 credits.
Aldebaran III Spaceport
north
ZZZAAAAPPPP!       OUCH!
Aldebaran III Spaceport
south
You are in the tiny waiting room for the spaceport.  No one is around.
There is a large vending machine here with a dark window, several buttons, and a large slot marked “insert credit card here”.

inventory
You are carrying some official identity papers
and some notes
and a credit card
kick machine
That would only help if the machine was broken, and it’s not!
Waiting Room

I’m no expert on C programming or indeed on interactive fiction, so I’m still trying to work my way through the code and the documentation that Peter sent me, but I think I can say without hesitation that this has all been a completely astounding and wonderful turn of events.

Many, many thanks to Peter and Jason for allowing me to be part of a rather historic moment.

[UPDATE 1: Peter Langston sent me a second version of “Wander.tgz”, derived from a 1980s release of Wander, which I had linked to here, but Peter has asked me to replace that second version with this third version “with save/restore actually working and with three more of the 1980 Wander worlds.” This third version still compiles on Mac OS X 10.6.8, and should compile on Linux too.]

[UPDATE 2: Another copy of Wander has now been found (along with the rest of Peter Langston’s 1980 PSL Games distribution, which Wander was part of). It was found by chineur Doug Merritt. This copy contains three more Wander “worlds”, in addition to the “a3” world that I’ve quoted from in the main post above. It’s now on Github.]

[UPDATE 3: favardin has compiled Wander for Windows and Linux.]

[UPDATE 4: I’ve hacked the source code to create a crude DOS port of Wander: it’s playable, but the SAVE and RESTORE commands are broken – please contact me if you know why. I then packaged up my DOS hack into an em-dosbox version which is playable online: click here to play Wander online. Again, please get in touch if you can improve either the DOS version or the web version, or if you know how to make a pure-emscripten port of Wander.]

[1] Quotation from the file “Wander.txt”, the man page for Wander, sent to me by Peter Langston with the source code.

Advertisements
This entry was posted in Uncategorized and tagged , , , , , , , , , . Bookmark the permalink.

58 Responses to Wander (1974) — a lost mainframe game is found!

  1. Pingback: Wander (1974) — a lost mainframe game is found! | Jerz's Literacy Weblog

  2. John says:

    Can you share the .tgz?

  3. David says:

    could you release your patch and OSX version? i’d love to be able to get this working on my Mac as well?

  4. I wonder if you could create a chat interface where a ‘player’ and ‘dungeon master’ have their interactions recorded and used to build a replayable text game up automatically.

  5. ninoscript says:

    Upload to github and let the community play with it 🙂

  6. Jason Dyer says:

    Hello everyone! It’s Jason (linked to up top) here:

    Please be patient; Peter just recently unearthed this ancient C port and has been having to find moments in his spare time to get it to work.

    I should add that a3, the game excerpted above, is (by his recollection) from 1977-1978, made during a period where he was fixing up the source code to make it easier to understand, but there are games that date back to 1974. However, those games are buried on a tape which may or may not be readable.

    • Jason Dyer says:

      Oh, and I should add, if anyone has access to something called a “PSL Games Collection” that as distributed for UNIX around the mid-80s, that would have everything. Contact us!

  7. John says:

    While I appreciate the work to get it running again, I’m also concerned that changes may be being made to the original code. Researchers studying the code, if/when it’s released, won’t be able to say with 100% certainty that something was in the original or not. I’d argue for releasing the original – if broken – version separately.

    • Douglas Muth says:

      I agree. I think it would benefit everyone if a history of code changes was kept through revision control.

      I would very much like to see the current project placed up on GitHub with future changes being tracked through there. Furthermore, it would allow others the chance to look at the code and help make changes. This is something that I would be personally interested in doing.

      • David Bock says:

        This is exactly the strength of a tool like git / site like github. You can release the original code in exactly the shape you found it and have a completely history of every micro change that was made to it and why. Further, others can fork it and move it in their own direction, while never losing the traceability back to the original. Of course, the license of the original code should be respected while doing this.

        This kind of computer archaeology Is only going to become more important. We should act like Sir William Flinders Petrie did and turn this archaeology into a true discipline.

  8. Pingback: Lost mainframe games | Renga in Blue

  9. Warcabbit says:

    To note what might be the obvious, this is based on Poul Anderson’s Flandry of Terra novels.

  10. Please, please please share this in unmodified form, otherwise it would be very hard (or even impossible) to get it running again on the old operating systems of that day, which is something that I (and I assume others) would definitely want to try

  11. Pingback: Wander (1974) release, and questions answered | Renga in Blue

  12. It looks to me as your ZIP file is missing the main wander.c file, there’s only two already compiled object files (Fwander.o and NFwander.o) which are slightly difficult to reverse-engineer/decompile since PDP-11 assembly is not the main strength of contemporary disassembler tools…

    Please share the main .c file so that the rest of us can try to get it to run on our PDP-11s 🙂

  13. true-grue says:

    Thank you for the article! It inspired me to write my own notes (http://ifhub.ru/blog/198.html in Russian) about this great game tool! It would be very interesting to know where Peter Langston got this idea about using of pattern matching. The syntax slightly resembles META II system (http://en.wikipedia.org/wiki/META_II ).

    • Ant says:

      Thanks for the comment, and the notes! I think it would also be very interesting to know where Peter got the whole idea to create Wander in the first place, especially because his very first version seems to have been so early. But it’s hard to remember that far back, so this may remain a mystery.

      Could you expand on what you mean by “pattern matching”? You probably understand the code better than I do!

      • true-grue says:

        Pattern matching is a high-level feature for parsing structured data. It can easily replace a complicated code that use a lot of conditional branching.

        In each location inside .wrld file we see a set of rules. Wander (it’s a simplified description) will try to match each rule, from first to the last, with the user input, until the first success. Each rule consists of some fields and uses two syntax constructs: sequence (field1 field2 …) and alternative (field1 | field2 | …). Let’s take an example from a3, first location.

        south 2
        west 100
        north|east|ne|nw|se|sw m=”ZZZAAAAPPPP! OUCH!”
        take\ card o?card t+card m=”\

        Here we have 4 rules. Wander will evaluate them as shown below.

        1. If user input is “south”, go to location #2.
        2. Else if user input is “west” goto location #200.
        3. Else if user input is “north” or “east” or “ne” or “nw” or “se” or “sw”, show the message text.
        4. Else if user input is “take card” and the card is here (either being carried or in location), the card is now being carried (this field will always return success, there is no conditions here, only changing of the state), show the message text.

        As you may see it’s easier to describe things in this manner instead of using lots of nested if/else constructs.

        Detailed information about pattern matching in Wander is here (I’ve converted nroff files to html): http://sovietov.com/tmp/wander/wrld.html

        By the way, the first popular programming language with pattern matching feature, SNOBOL, was developed in the middle of 60s. Maybe Peter Langston was familar with it? Here is some information about SNOBOL/pattern matching history: http://trevorjim.com/john-reynolds-and-the-invention-of-pattern-matching/

    • Ant says:

      Thank you!

  14. Pingback: Wander, Possibly The First Text Adventure Game Ever, Unearthed - ASidCast

  15. Pingback: Punti sull’editoria e sul digitale | Tipografia digitale

  16. Pingback: April Link Assortment | Emily Short's Interactive Storytelling

  17. Pingback: Issue #62: Letter From the Editor and Call For Submissions | SPAG

  18. Pingback: Earliest text adventure rediscovered, available to public | NAG Online

  19. Katherine says:

    Hi! I just took over as editor of SPAG, a long-running web magazine about interactive fiction, and I’d love to interview you for our next issue (tentatively running this summer and/or fall). If you’re interested, let me know! I couldn’t find an email address on the site so I’m commenting here. Thanks!

  20. Pingback: Wander follow-up | Retroactive Fiction

  21. Pingback: The Secret of Arendarvon Castle (1985) — bytecode avant la lettre | Retroactive Fiction

  22. Pingback: 2015 in Interactive Fiction So Far | Emily Short's Interactive Storytelling

  23. Pingback: [Lluvia de Pixels #02]: ¡Aventuras conversacionales! | The Phil Spectrum Project

  24. Pingback: Lazy Reading for 2015/10/18 – DragonFly BSD Digest

  25. Pingback: Au Courant | WNBTv - will not be televised

  26. Brian Moriarty says:

    Nice detective work here.

    I’d like to mention you (and Jason) by name in a history speech I’m giving this weekend. If you’re comfortable with this, can you email it to me? Thanks!

  27. Pingback: Problem Attic (Liz Ryerson) | Emily Short's Interactive Storytelling

  28. Pingback: Le origini delle avventure testuali rimesse in discussione?

  29. Annoyed user says:

    OMG You have the most obnoxious ads imaginable Loud and looping indefinitely. They keep restarting even when paused or unmute after being muted !

  30. BEB says:

    At at guess the call to wopen needs to include a ‘b’ in the flags to work properly on DOS as otherwise it won’t be binary transparent due to CR->CRLF mapping issues.

  31. nonzyro says:

    This is an awesome find. Reading this post was a sort of nostalgic moment for me, because my first PC game was a Text Adventure called “Haunt” on my MS-DOS 286 PC that boasted no sound card and a text-only monochrome monitor. Before that PC, I’d only played console games so I’d never come across that genre. Found it fascinating at the time because there was something atmospheric to only seeing rooms through my mind’s eye.

  32. Pingback: Wander | QUANTA

Leave a Reply to true-grue Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s