Fortran 4 and Adventure

55 views
Skip to first unread message

denni...@gmail.com

unread,
Feb 8, 2008, 7:24:26 PM2/8/08
to
I'm a contributor (donating my time) to a research project funded by
the Library of Congress. The goal is to preserve digital culture, and
the first item on my group's list is Colossal Cave Adventure.

(News on the LoC project is available here... http://www.loc.gov/today/pr/2007/07-156.html
)

Last August, after I published an article that analyzed the original
source code for Adventure, Matt Russotto posted a version of that
source code "minimally modified to compile under GNU g77."

http://www.russotto.net/~russotto/ADVENT/

Here are the original files, in the format Don Woods provided them to
me.

http://jerz.setonhill.edu/if/crowther/

The goal of the LoC project is not merely to preserve a working
executable, but rather to preserve the environment in which the game
was created, so that researchers will be able understand how the tools
available to Crowther, and later to Woods, might have influenced their
creative choices. So I'm trying to dig deep.

1) How might I explain, for the general audience, the specific purpose
of the minimal modifications that Matthew made to the original files?
(Matthew writes: "The data files have been converted to fixed-field
format based on a tab width of 7 and one (erroneous?) blank line has
been removed from each." Matthew also mentions adding some support
routines. My own knowledge of Fortran is limited to a single computer-
camp lesson around 1982, so I'd welcome an authoritative expansion of
what Matthew has written here.)

2) What would it take to compile directly from the Fortran 4 source
code, without making the changes that Matthew made in order to get the
code to compile under GNU g77?

3) Are there open-source compilers that could handle the Fortran 4
source directly?

I'd be grateful for any and all help the IF community can offer, so
that I'll be better informed should I need to pursue these questions
elsewhere.

greg

unread,
Feb 9, 2008, 5:33:39 AM2/9/08
to
denni...@gmail.com wrote:
> 2) What would it take to compile directly from the Fortran 4 source
> code, without making the changes that Matthew made in order to get the
> code to compile under GNU g77?

From what I remember, the biggest problems weren't due to
it being Fortran 4 as such, but that the code made various
assumptions that were unique to the PDP-10, such as being
able to fit 5 characters into a word.

The easiest way to get it working using the original source
would probably be to compile and run it on a PDP-10 emulator.
In fact that might be the only reasonably feasible way.

--
Greg

Jayson Smith

unread,
Feb 9, 2008, 6:36:42 AM2/9/08
to
I actually just the other day downloaded a distribution which includes the
KLH PDP-10 emulator and a prebuilt image of a TOPS-20 filesystem with lots
of programs. Included is the Crowther and Woods Advent, and Zork from
January 16, 1981, with a US News and Dungeon Report dated December 11, 1979.
I know next to nothing about TOPS-20, but I bet, if I knew how, I could get
the original Crowther sources running on my emulated PDP-10, since I think
Fortran is included. I don't even know how to do a proper shutdown, create
new users, etc. or I might consider setting it up to be accessed by the IF
community if anyone's interested.
Note, my E-mail address is scrambled. Just remove all references to spam or
the hating of spam in order to reply privately.
Jayson.

"greg" <gr...@cosc.canterbury.ac.nz> wrote in message
news:47AD818...@cosc.canterbury.ac.nz...

Adam Thornton

unread,
Feb 9, 2008, 11:21:51 AM2/9/08
to
In article <47AD818...@cosc.canterbury.ac.nz>,

Fortunately, this is an off-the shelf exercise. Not that I've done it,
but:

http://simh.trailing-edge.com/

Adam

John W. Kennedy

unread,
Feb 9, 2008, 12:45:49 PM2/9/08
to
greg wrote:
> denni...@gmail.com wrote:
>> 2) What would it take to compile directly from the Fortran 4 source
>> code, without making the changes that Matthew made in order to get the
>> code to compile under GNU g77?
>
> From what I remember, the biggest problems weren't due to
> it being Fortran 4 as such, but that the code made various
> assumptions that were unique to the PDP-10, such as being
> able to fit 5 characters into a word.

However, those assumptions were themselves the result of it being
FORTRAN IV, which had no other way of doing character processing than to
make machine-dependent assumptions about character/word mapping.

(This is not quite as mad as it seems. In the 50s and early 60s, when
FORTRAN, FORTRAN II, and FORTRAN IV were designed, machines optimized
for scientific use had their RAM [as we call it today] organized by
words, typically of 18 or 36 bits, instead of by bytes or the 6-bit
characters [no lower case] that were normal at the time. Character
processing was therefore intrinsically difficult, involving shifts,
ANDs, and ORs all over the place, and the designers of FORTRAN felt they
were justified in putting in just enough support to read fixed-length
strings and print them back.)


--
John W. Kennedy
"The grand art mastered the thudding hammer of Thor
And the heart of our lord Taliessin determined the war."
-- Charles Williams. "Mount Badon"

David Kinder

unread,
Feb 9, 2008, 2:31:04 PM2/9/08
to
denni...@gmail.com wrote:
> 1) How might I explain, for the general audience, the specific purpose
> of the minimal modifications that Matthew made to the original files?
> (Matthew writes: "The data files have been converted to fixed-field
> format based on a tab width of 7 and one (erroneous?) blank line has
> been removed from each." Matthew also mentions adding some support
> routines. My own knowledge of Fortran is limited to a single computer-
> camp lesson around 1982, so I'd welcome an authoritative expansion of
> what Matthew has written here.)

The modifications are really just nearly-mechanical translations of parts of
the source to cope with the differences between the rules of writing
Fortran-IV and writing Fortran-77. The essence of the program remains
unchanged, if you like, defining the essence as what it does in response to
all possible inputs.

> 2) What would it take to compile directly from the Fortran 4 source
> code, without making the changes that Matthew made in order to get the
> code to compile under GNU g77?

It can't be done on a modern platform without either modifying the source,
as Matthew did, or modifying G77. The former has been done and the latter is
a lot of work for essentially no result :-)

You could write a preprocessor that takes Fortran-IV and outputs Fortran-77,
but that would just be writing a program that does what Matthew has already
done.

As someone else suggested, you could use a simulator such as SIMH to
recreate the same sort of environment that Crowther and Woods actually used.
There are copies of old PDP-10 software libraries out there with Fortran-IV
compilers in them. To do this would require a pretty good understanding of
such old systems - what documentation is still extant is often very patchy.
You might try asking on alt.sys.pdp10, where several people who know such
ancient and arcane things can be found.

> 3) Are there open-source compilers that could handle the Fortran 4
> source directly?

No. Fortran-IV is a completely dead dialect of Fortran. There are no
compilers that can cope with it from later than the 1960s.

I would say that trying to compile the Fortran-IV code "directly" is not
necessary. Matthew's changes don't affect the function of the program in any
significant way, so stick with that code.

David

John W. Kennedy

unread,
Feb 9, 2008, 3:36:23 PM2/9/08
to
David Kinder wrote:
> No. Fortran-IV is a completely dead dialect of Fortran. There are no
> compilers that can cope with it from later than the 1960s.

The mere fact that the next standard wasn't until 1977 (Fortran 66 and
FORTRAN IV are essentially identical) casts some doubt on that. In any
case, IBM mainframe Fortran has never been updated beyond a conservative
dialect of Fortran-77, so it still handles FORTRAN IV nicely. (In fact,
it can still handle many FORTRAN and FORTRAN II programs.)
--
John W. Kennedy
"Though a Rothschild you may be
In your own capacity,
As a Company you've come to utter sorrow--
But the Liquidators say,
'Never mind--you needn't pay,'
So you start another company to-morrow!"
-- Sir William S. Gilbert. "Utopia Limited"

DKleinecke

unread,
Feb 9, 2008, 6:37:29 PM2/9/08
to
On Feb 9, 12:36 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
> David Kinder wrote:
> > No. Fortran-IV is a completely dead dialect of Fortran. There are no
> > compilers that can cope with it from later than the 1960s.
>
> The mere fact that the next standard wasn't until 1977 (Fortran 66 and
> FORTRAN IV are essentially identical) casts some doubt on that. In any
> case, IBM mainframe Fortran has never been updated beyond a conservative
> dialect of Fortran-77, so it still handles FORTRAN IV nicely. (In fact,
> it can still handle many FORTRAN and FORTRAN II programs.)

One aspect of this confuses me. FORTRAN 77 obviously dates from 1977
and I never used it. I had moved on from FORTRAN by then. But
Wikipedia says that one of the innovations in FORTRAN 77 was the
implicit statement. I am certain I used the implicit statement for
years. So obviously I used compilers that extended FORTRAN 66.
Crowther's source program (the 79 room version) contains an implicit
statement. We are sure that Adventure was not written late enough to
be in FORTRAN 77. Hence what compiler did he use?

The code shows that at the beginning Crowther was not using an
implicit statement and he added one later. Either he learned something
or he changed compilers. All of this has impact on the original
question.

The biggest flaw of FORTRAN 66 is that it is not a block-oriented
language. This makes chained if - else if - else if segments very
clumsy to write. Such segments are a fundamental part of LISP and, in
my opinion, were the reason LISP was considered the best language for
artificial intelligence work. When Scott Adams started writing games
he went this way with a vengeance (even though he was writing in
BASIC).

I have been researching the original Adventure and comparing it to
Scott Adams (I would compare it to Zork if I had the source code for
Zork). The question I am trying to answer is: What is the most natural
way to write one of these games?

Perhaps I should ask to be included in the project Dennis described.

John W. Kennedy

unread,
Feb 9, 2008, 9:20:18 PM2/9/08
to
DKleinecke wrote:
> On Feb 9, 12:36 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
>> David Kinder wrote:
>>> No. Fortran-IV is a completely dead dialect of Fortran. There are no
>>> compilers that can cope with it from later than the 1960s.
>> The mere fact that the next standard wasn't until 1977 (Fortran 66 and
>> FORTRAN IV are essentially identical) casts some doubt on that. In any
>> case, IBM mainframe Fortran has never been updated beyond a conservative
>> dialect of Fortran-77, so it still handles FORTRAN IV nicely. (In fact,
>> it can still handle many FORTRAN and FORTRAN II programs.)
>
> One aspect of this confuses me. FORTRAN 77 obviously dates from 1977
> and I never used it. I had moved on from FORTRAN by then. But
> Wikipedia says that one of the innovations in FORTRAN 77 was the
> implicit statement. I am certain I used the implicit statement for
> years. So obviously I used compilers that extended FORTRAN 66.
> Crowther's source program (the 79 room version) contains an implicit
> statement. We are sure that Adventure was not written late enough to
> be in FORTRAN 77. Hence what compiler did he use?

The original 7090 FORTRAN IV was released by IBM in 1962. I believe the
IMPLICIT statement first appeared in preliminary specs, ca. 1964-65, for
OS/360 FORTRAN IV. I dare say that was too late for inclusion in the
FORTRAN 66 standard.

> The biggest flaw of FORTRAN 66 is that it is not a block-oriented
> language. This makes chained if - else if - else if segments very
> clumsy to write. Such segments are a fundamental part of LISP and, in
> my opinion, were the reason LISP was considered the best language for
> artificial intelligence work. When Scott Adams started writing games
> he went this way with a vengeance (even though he was writing in
> BASIC).

ALGOL 60 had nested logic, as did Pascal, PL/I, and C. LISP has
historically been used in AI because it supports nested, open-ended data
structures and machine-independent run-time code generation.

> I have been researching the original Adventure and comparing it to
> Scott Adams (I would compare it to Zork if I had the source code for
> Zork). The question I am trying to answer is: What is the most natural
> way to write one of these games?

In a language designed for the job, with a large library and a
selectively rewritable base world model and parser, of course.

But if you don't have one of those, then there are two possible answers:
one is "The language you know best." The other is, "LISP".

--
John W. Kennedy
"When a man contemplates forcing his own convictions down another man's
throat, he is contemplating both an unchristian act and an act of
treason to the United States."
-- Joy Davidman, "Smoke on the Mountain"

DKleinecke

unread,
Feb 10, 2008, 12:27:43 PM2/10/08
to

The fact remains that Crowther first wrote a version (now lost) of
Adventure without an implicit statement and then he added one. This
should help us determine what compiler he used and that would help
answer Dennis' question about the restraints imposed intellectually by
a choice of language and compiler.

I pointed to the block structure problem because it seems to me to be
the major restraint Crowther would have felt. String processing in
FORTRAN was very weak - I remember advising people to implement their
ideas in BASIC instead of FORTRAN simply because BASIC handled strings
better. But there is no significant string processing in Adventure (or
any of the other early games).

Crowther appears, on the basis of the source code, to have originally
written Adventure with the output strings inline in the code. This
version is also lost. The version that has come down to us has a
database of messages which are selected by message numbers. There is
no obvious reason for such a change. One possible reason would be to
facilitate translation into other languages - but there is no evidence
that Crowther was interested in this possibility.

I am not prepared to argue the pro and cons of LISP. Personally I have
never found it helpful. I did implement a version of it once to solve
one particular problem but generally I would have used assembly
language for the kind of thing LISP advocates offer as examples of the
power of LISP. After C came along I have taken to using it as a kind
of abstract assembly language. Works beautifully.

Adam Thornton

unread,
Feb 10, 2008, 1:22:29 PM2/10/08
to
I just noticed something upthread a bit and wanted to jump in on it:

In article <bd3d0fa4-965e-490d...@d4g2000prg.googlegroups.com>,


DKleinecke <dklei...@gmail.com> wrote:
>On Feb 9, 6:20 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
>> DKleinecke wrote:
>> > On Feb 9, 12:36 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
>> >> David Kinder wrote:
>> > I have been researching the original Adventure and comparing it to
>> > Scott Adams (I would compare it to Zork if I had the source code for
>> > Zork). The question I am trying to answer is: What is the most natural
>> > way to write one of these games?

Isn't the MDL source for Zork actually available?

>The fact remains that Crowther first wrote a version (now lost) of
>Adventure without an implicit statement and then he added one.

How do we know this?

>This
>should help us determine what compiler he used and that would help
>answer Dennis' question about the restraints imposed intellectually by
>a choice of language and compiler.

I suspect that you are going to find that there was exactly one Fortran
compiler available for the PDP-10, although it might well have been one
of several versions. Whether the implicit statement was added during
the set of likely-to-be-available-versions is something I don't know at
all.

>Crowther appears, on the basis of the source code, to have originally
>written Adventure with the output strings inline in the code. This
>version is also lost. The version that has come down to us has a
>database of messages which are selected by message numbers. There is
>no obvious reason for such a change.

Sure there is.

An external message database makes it much, much easier to change your
output text. Remember that there's probably no such thing as a screen
editor for the original environment (I don't know this for sure, but I
would be quite surprised if there were). It also means you don't have
to rebuild the whole damn thing each time you want to fix a missing
comma or something; you just rebuild your repository (can you do that on
a per-message basis?) and relink. My money is on programmer
convenience, probably brought about as a result of Crowther realizing
that, as the popularity of the game exploded, he was going to have to do
a lot more touching-up of his output text than he once imagined.

Adam

Ryusui

unread,
Feb 10, 2008, 3:50:58 PM2/10/08
to

DKleinecke

unread,
Feb 10, 2008, 9:31:15 PM2/10/08
to
On Feb 10, 12:50 pm, Ryusui <TheRyu...@gmail.com> wrote:
> "Now lost"? I think not.
>
> http://groups.google.com/group/rec.arts.int-fiction/browse_thread/thr...

I am working with the FORTRAN source code that Crowther sent Woods. It
is a 79 room version and I call it the Crowther version. I call the
140 room version the Woods version.

The FORTRAN source code shows evidence of a number of earlier
versions. The easiest to recognize of these I call paleo-Adventures A,
B , C and D. Even earlier there seems to have been a version where the
input was only a single word. This earliest version (I call it eo-
Adventure) is so poorly represented in what has survived that I
believe it cannot be reconstructed. The paleo-Adventures all can be
reconstructed without much difficulty.

However it is proper to describe them as lost. There is no concrete
evidence for their existence - only supposition. Not all of their
features can be reconstructed in a satisfactory way. For example, the
nugget and stairs puzzle seems to no longer make sense and I have not
been able to give it one that satisfies me..

DKleinecke

unread,
Feb 10, 2008, 9:43:27 PM2/10/08
to
On Feb 10, 10:22 am, a...@fsf.net (Adam Thornton) wrote:

> Isn't the MDL source for Zork actually available?

If it is will soembody please tell me wher?


>
> >The fact remains that Crowther first wrote a version (now lost) of
> >Adventure without an implicit statement and then he added one.
>
> How do we know this?
>

Because some of the variables have artificial initial "J" added to
make them integer variables.

This is, of course, a possibility that depends on how your computer
center operates and how it bills. At many a batch-oriented computer
center in those days there was no advantage in that strategy. There
was no gain to the programmer whose main occupation was waiting for
his program to get through the batch queue.

Adventure, of course, makes no sense unless some kind of interaction
was possible. But that does not imply that compilation was done
interactively. Assuming one or another of the time sharing systems of
the mid-70's it seems unlikely that Crowther could have allowed other
persons than himself access to anything except already compiled code.

Adam Thornton

unread,
Feb 10, 2008, 10:37:03 PM2/10/08
to
In article <4f01d6ec-1f2c-477b...@i72g2000hsd.googlegroups.com>,

DKleinecke <dklei...@gmail.com> wrote:
>On Feb 10, 10:22 am, a...@fsf.net (Adam Thornton) wrote:
>> An external message database makes it much, much easier to change your
>> output text. Remember that there's probably no such thing as a screen
>> editor for the original environment (I don't know this for sure, but I
>> would be quite surprised if there were). It also means you don't have
>> to rebuild the whole damn thing each time you want to fix a missing
>> comma or something; you just rebuild your repository (can you do that on
>> a per-message basis?) and relink. My money is on programmer
>> convenience, probably brought about as a result of Crowther realizing
>> that, as the popularity of the game exploded, he was going to have to do
>> a lot more touching-up of his output text than he once imagined.

>Adventure, of course, makes no sense unless some kind of interaction


>was possible. But that does not imply that compilation was done
>interactively. Assuming one or another of the time sharing systems of
>the mid-70's it seems unlikely that Crowther could have allowed other
>persons than himself access to anything except already compiled code.

I wasn't suggesting that he did.

However, in a batch environment, surely the risk of wasting your
precious compile run would be much smaller with a message repository.
If you have a bunch of messages to update, and you screw one up--and,
again, I'm guessing here--then it seems perfectly plausible that you end
up with a program you can test for everything except that message.

If it's inline, you've just gotten a syntax error back from your FORTRAN
compiler.

But that brings up something that I think is an interesting question.
We know (don't we?) that Crowther was using a PDP-10 at BBN to write
Adventure. Surely *someone* knows what the user environment would have
been there and then?

My guess is on TENEX, seeing as how the paging hardware that made it
possible was developed at BBN. Which, as a timesharing environment,
probably *did* allow interactive compilation. Anyone here who knows for
sure?

Adam

Rich Alderson

unread,
Feb 10, 2008, 11:24:43 PM2/10/08
to
"Jayson Smith" <ihatespamratg...@insightbb.spamsucks.com> writes:

> I actually just the other day downloaded a distribution which includes the
> KLH PDP-10 emulator and a prebuilt image of a TOPS-20 filesystem with lots
> of programs. Included is the Crowther and Woods Advent, and Zork from
> January 16, 1981, with a US News and Dungeon Report dated December 11, 1979.
> I know next to nothing about TOPS-20, but I bet, if I knew how, I could get
> the original Crowther sources running on my emulated PDP-10, since I think
> Fortran is included. I don't even know how to do a proper shutdown, create
> new users, etc. or I might consider setting it up to be accessed by the IF
> community if anyone's interested.

The manuals at http://www.bitsavers.org/pdf/dec/pdp10/TOPS20/V7 are a good
place to start.

--
Rich Alderson "You get what anybody gets. You get a lifetime."
ne...@alderson.users.panix.com --Death, of the Endless

Rich Alderson

unread,
Feb 10, 2008, 11:39:21 PM2/10/08
to
ad...@fsf.net (Adam Thornton) writes:

> I just noticed something upthread a bit and wanted to jump in on it:

>> On Feb 9, 6:20 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
>>> DKleinecke wrote:
>>>> On Feb 9, 12:36 pm, "John W. Kennedy" <jwke...@attglobal.net> wrote:
>>>>> David Kinder wrote:
>>>> I have been researching the original Adventure and comparing it to
>>>> Scott Adams (I would compare it to Zork if I had the source code for
>>>> Zork). The question I am trying to answer is: What is the most natural
>>>> way to write one of these games?

> Isn't the MDL source for Zork actually available?

Yes. See, for example, http://simh.trailing-edge.com/games/zork-mdl.zip for
the final Incompatible Timesharing System version.

>> The fact remains that Crowther first wrote a version (now lost) of
>> Adventure without an implicit statement and then he added one.

> How do we know this?

>> This
>> should help us determine what compiler he used and that would help
>> answer Dennis' question about the restraints imposed intellectually by
>> a choice of language and compiler.

> I suspect that you are going to find that there was exactly one Fortran
> compiler available for the PDP-10, although it might well have been one
> of several versions. Whether the implicit statement was added during
> the set of likely-to-be-available-versions is something I don't know at
> all.

Your suspicions are incorrect.

The original FORTRAN IV for the PDP-10 was a third-party compiler sold by DEC,
called F40. DEC eventually brought out their own compiler, FORTRA (program
names being stored in SIXBIT, six chars to a 36-bit word), which underwent long
development and which at version 7 became a Fortran-77 compiler. Two more
versions, 10 and 11 (can you say "octal"? :), were released before Digital
canceled the product line.

Rich Alderson

unread,
Feb 10, 2008, 11:44:58 PM2/10/08
to
DKleinecke <dklei...@gmail.com> writes:

> On Feb 10, 10:22 am, a...@fsf.net (Adam Thornton) wrote:

>> Isn't the MDL source for Zork actually available?

> If it is will soembody please tell me wher?

Se my earlier response.

Oh, hell.

http://simh.trailing-edge.com/games/zork-mdl.zip

>> An external message database makes it much, much easier to change your
>> output text. Remember that there's probably no such thing as a screen
>> editor for the original environment (I don't know this for sure, but I
>> would be quite surprised if there were). It also means you don't have
>> to rebuild the whole damn thing each time you want to fix a missing
>> comma or something; you just rebuild your repository (can you do that on
>> a per-message basis?) and relink. My money is on programmer
>> convenience, probably brought about as a result of Crowther realizing
>> that, as the popularity of the game exploded, he was going to have to do
>> a lot more touching-up of his output text than he once imagined.

> This is, of course, a possibility that depends on how your computer


> center operates and how it bills. At many a batch-oriented computer
> center in those days there was no advantage in that strategy. There
> was no gain to the programmer whose main occupation was waiting for
> his program to get through the batch queue.

> Adventure, of course, makes no sense unless some kind of interaction
> was possible. But that does not imply that compilation was done
> interactively. Assuming one or another of the time sharing systems of
> the mid-70's it seems unlikely that Crowther could have allowed other
> persons than himself access to anything except already compiled code.

Remember that Crowther was writing at BB&N, a think tank which was working on
ideas like "What should a timesharing operating system really work like?" He
was not limited to batch processing--indeed, he had a system pretty much all to
himself. Further, the original audience for his game was his own children, not
a large audience of strangers.

The massive expansion of Adventure usage came after Don Woods got a copy.

denni...@gmail.com

unread,
Feb 11, 2008, 12:34:06 AM2/11/08
to
On Feb 10, 9:31 pm, DKleinecke <dkleine...@gmail.com> wrote:
>
> I am working with the FORTRAN source code that Crowther sent Woods. It
> is a 79 room version and I call it the Crowther version. I call the
> 140 room version the Woods version.

Can you tell us a little more about this? Is this part of an academic
project, or just something you're doing for its historical value? I'm
thrilled to hear that someone who has the necessary skills is looking
so closely at this very important code.

> The FORTRAN source code shows evidence of a number of earlier
> versions. The easiest to recognize of these I call paleo-Adventures A,
> B , C and D.

My own reading of the code does suggest some layering -- for instance,
the vocabulary words for compass directions have a higher number than
the words for many location-specific motion words ("downs" for
"downstream" and the like). I have testimony that says that at the
earliest, the game always recognized compass directions, so we can
determine, by looking at what related items Crowther had recently
added to the six different data tables, the rough shape of the game at
the point when Crowther overhauled the code in order to move the
compass navigation out of the code and into the data. But my ability
to close-read Fortran doesn't permit me to see it in the kind of
resolution you describe. So I'm eager to find out more -- either here
or by e-mail.

> Even earlier there seems to have been a version where the
> input was only a single word. This earliest version (I call it eo-
> Adventure) is so poorly represented in what has survived that I
> believe it cannot be reconstructed. The paleo-Adventures all can be
> reconstructed without much difficulty.
>
> However it is proper to describe them as lost. There is no concrete
> evidence for their existence - only supposition. Not all of their
> features can be reconstructed in a satisfactory way. For example, the
> nugget and stairs puzzle seems to no longer make sense and I have not
> been able to give it one that satisfies me..

As before, I'd love to hear your thoughts on this. If I can compile a
bunch of well-formed questions, I'd be happy to bring them to Crowther
and Woods. Both have been very kind to answer my questions, but I'd
rather not approach them until I've tried sorting through what we can
already deduce from the code, and I'm fully aware that I need the
skills of Fortran programmers to help me make sense of the issue.

I also put the following to the whole community:

What recommendations should I make to the digital archivists, towards
the end of preserving for future study the environment in which
Crowther and Woods worked, using open-source tools whenever
possible?

Rather than run an automated translation tool on the existing source
code, it seems most sensible to use a PDP-10 emulator. Would anyone
be available to discuss with me (on a level that techno-friendly
humanists can understand) what kind of technical setup an Adventure
preservation project would need, or perhaps introduce this project to
the PDP-10 emulation community so that I might seek help there, too?

I would be happy to see the discussion continue on rec.arts.int-
fiction, but people are welcome to cross-post in order to broaden the
discussion, or to contact me by e-mail.

denni...@gmail.com

unread,
Feb 11, 2008, 12:36:40 AM2/11/08
to
On Feb 10, 11:39 pm, Rich Alderson <ne...@alderson.users.panix.com>
wrote:

> The original FORTRAN IV for the PDP-10 was a third-party compiler sold by DEC,
> called F40. DEC eventually brought out their own compiler, FORTRA (program
> names being stored in SIXBIT, six chars to a 36-bit word), which underwent long
> development and which at version 7 became a Fortran-77 compiler. Two more
> versions, 10 and 11 (can you say "octal"? :), were released before Digital
> canceled the product line.

This is all fascinating stuff.

Let me try to get my head around it by asking a few questions. As I
see it, when Crowther was developing Adventure (during the 1975-76
school year, according to testimony from his sister), he may have had
access to several different compilers. Is that right?

Are any of these compilers in the common domain?

How might I contact the owners in order to gauge their willingness to
assist my efforts to preserve, for future study, the environment in
which Adventure was created?

Is it possible to tell, from the slight changes Don Woods made to the
advf4.77 files from March 11 to March 31, whether perhaps Woods and
Crowther did not have access to the same compilers?

Or is it the case that, with the files in their present state and no
executables to check, we don't yet know?

I'd like to be as clear as possible about what we can and can't tell
from the source code, so that when I bring the questions back to
Crowther and Woods, I can be very clear about what needs clarification.

greg

unread,
Feb 11, 2008, 4:07:44 AM2/11/08
to
DKleinecke wrote:
> But there is no significant string processing in Adventure (or
> any of the other early games).

That could very well be *because* it was hard to do string
processing in Fortran. He may have been forced to use Fortran
because it was the only language available, or the alternatives
available weren't much better at string processing.

> generally I would have used assembly
> language for the kind of thing LISP advocates offer as examples of the
> power of LISP.

A major reason that Lisp is attractive for things like AI
research is that it's a rapid prototyping system. You can
try out lots of different ideas much more quickly and
easily than in any kind of statically-typed compiled
environment. I don't think that can be appreciated just
from looking at examples of Lisp programs -- you have to
actually use it.

The same thing applies to all the more recent dynamic
languages, too -- Smalltalk, Python, Ruby, etc. They
get out of your way and let you get on with writing
your program.

--
Greg

Eric Smith

unread,
Feb 11, 2008, 7:50:14 PM2/11/08
to
Adam Thornton wrote:
> I suspect that you are going to find that there was exactly one Fortran
> compiler available for the PDP-10, although it might well have been one
> of several versions.

There were two, F40 and F10, which AFAIK were almost completely unrelated.
I think ADVENT was normally built with F40, but I could be mistaken
about that.

Eric

Eric Smith

unread,
Feb 11, 2008, 7:54:20 PM2/11/08
to
Adam Thornton wrote:
>> Isn't the MDL source for Zork actually available?

DKleinecke wrote:
> If it is will soembody please tell me wher?

Why? Google seems to work fine for me, didn't you bother to try it?

http://simh.trailing-edge.com/games/zork-mdl.zip

Eric Smith

unread,
Feb 11, 2008, 7:57:44 PM2/11/08
to
denni...@gmail.com writes:
> Are any of these compilers in the common domain?

If you mean "public domain", no.

If you're asking whether you can obtain the software and run it in
a simulator, yes.

> How might I contact the owners in order to gauge their willingness to
> assist my efforts to preserve, for future study, the environment in
> which Adventure was created?

The owners don't exist any more in any real sense. In principle,
HP owns the stuff now, but they probably don't even realize it. But
DEC did offer a hobbyist license for 36-bit software.

Matthew T. Russotto

unread,
Feb 12, 2008, 5:38:30 PM2/12/08
to
In article <6003b762-dd95-444f...@s8g2000prg.googlegroups.com>,

The changes are all inherently technical in nature; I'm not sure how
you could explain them to an audience which doesn't know the
difference between delimited and fixed-field records, without
explaining that whole concept.

There's only really two support routines. One completely replaces the
input routine from the original code (which is based strongly on the
way Hollerith constants worked in the original environment), and one
simply provides a random-number generator (which exists in both the
original and modern environment, just with different names). The
third routine UPCASE is really just part of the input routine.

Most of the changes in the code have to do with removing the
dependence on Hollerith constants.

>2) What would it take to compile directly from the Fortran 4 source
>code, without making the changes that Matthew made in order to get the
>code to compile under GNU g77?

The easiest method would be an emulator of the machine (a PDP-10, I
believe) and OS the code originally ran on, along with the original
compiler used to compile it.

>3) Are there open-source compilers that could handle the Fortran 4
>source directly?

Not unmodified. The problem isn't that it's FORTRAN IV. It's that it is a
specific variant of FORTRAN IV, with a few extensions which make life
difficult. Some of the changes would be fairly easy to implement, but
the so-called Hollerith constants are the big problem. The program assumes a
certain relationship between a 5-character string (a Hollerith
constant) and an integer which does not exist in modern machines, and
would be difficult to fake as it's based on a 36 bit word size.
--
There's no such thing as a free lunch, but certain accounting practices can
result in a fully-depreciated one.

Matthew T. Russotto

unread,
Feb 12, 2008, 5:40:13 PM2/12/08
to
In article <47ae0ec9$0$25043$607e...@cv.net>,

John W. Kennedy <jwk...@attglobal.net> wrote:
>David Kinder wrote:
>> No. Fortran-IV is a completely dead dialect of Fortran. There are no
>> compilers that can cope with it from later than the 1960s.
>
>The mere fact that the next standard wasn't until 1977 (Fortran 66 and
>FORTRAN IV are essentially identical) casts some doubt on that. In any
>case, IBM mainframe Fortran has never been updated beyond a conservative
>dialect of Fortran-77, so it still handles FORTRAN IV nicely. (In fact,
>it can still handle many FORTRAN and FORTRAN II programs.)

It won't handle the Crowther code. Not only would the word size trip
it up, but the ASCII/EBCDIC issue would as well.

Matthew T. Russotto

unread,
Feb 12, 2008, 5:42:38 PM2/12/08
to
In article <a6626490-fd73-40e1...@s8g2000prg.googlegroups.com>,
DKleinecke <dklei...@gmail.com> wrote:

>One aspect of this confuses me. FORTRAN 77 obviously dates from 1977
>and I never used it. I had moved on from FORTRAN by then. But
>Wikipedia says that one of the innovations in FORTRAN 77 was the
>implicit statement. I am certain I used the implicit statement for
>years. So obviously I used compilers that extended FORTRAN 66.
>Crowther's source program (the 79 room version) contains an implicit
>statement. We are sure that Adventure was not written late enough to
>be in FORTRAN 77. Hence what compiler did he use?

TOPS-10 FORTRAN, judging from the extensions.

Matthew T. Russotto

unread,
Feb 12, 2008, 5:46:01 PM2/12/08
to

>The fact remains that Crowther first wrote a version (now lost) of
>Adventure without an implicit statement and then he added one. This
>should help us determine what compiler he used and that would help
>answer Dennis' question about the restraints imposed intellectually by
>a choice of language and compiler.

It may simply be that Crowther discovered the IMPLICIT statement.
It's been around a lot longer than it has been standard.

>Crowther appears, on the basis of the source code, to have originally
>written Adventure with the output strings inline in the code. This
>version is also lost. The version that has come down to us has a
>database of messages which are selected by message numbers. There is
>no obvious reason for such a change. One possible reason would be to
>facilitate translation into other languages - but there is no evidence
>that Crowther was interested in this possibility.

IMO, most likely for maintainability and extensibility of the code.
Easier to add rooms with a database than to have to add code for each
room.

Rich Alderson

unread,
Feb 12, 2008, 6:54:43 PM2/12/08
to
[ cross-posted from rec.arts.int-fiction ]

denni...@gmail.com writes:

[ moved from end of the original post to make it more salient]

> I would be happy to see the discussion continue on rec.arts.int-fiction, but


> people are welcome to cross-post in order to broaden the discussion, or to
> contact me by e-mail.

[ thus: ]

> I also put the following to the whole community:

> What recommendations should I make to the digital archivists, towards the
> end of preserving for future study the environment in which Crowther and
> Woods worked, using open-source tools whenever possible?

> Rather than run an automated translation tool on the existing source code,
> it seems most sensible to use a PDP-10 emulator. Would anyone be available
> to discuss with me (on a level that techno-friendly humanists can
> understand) what kind of technical setup an Adventure preservation project
> would need, or perhaps introduce this project to the PDP-10 emulation
> community so that I might seek help there, too?

I am happy to discuss this with anyone; I'm sure that a number of the regular
readers of alt.sys.pdp10 would similarly be happy to do so.

A brief introduction is probably a good idea: I am currently the systems
manager of a pair of PDP-10 systems, a DECSYSTEM-2065 running the Tops-10
operating system and an XKL Toad-1 System running TOPS-20, at an on-line
museum available at http://www.PDPplanet.org/ . I have been a TOPS-20 systems
programmer and systems manager for more than 25 years, at the University of
Chicago, Stanford, cisco Systems, XKL, and currently Vulcan. I first played
the 350-point Crowther&Woods Adventure on a UofC DEC-20 in autumn 1977, and
Zork on the same system a few months later. I knew Dave Long, who created the
well-known 500 and 501 point versions of Adventure, there.

There are two good emulators for the PDP-10, if you can't get access to real
hardware (accounts are available on our systems). One, SimH, emulates only
the KS-10 processor (the DECSYSTEM-2020, a "department-level" system) and runs
only TOPS-20 v4.1; the other, KLH10, is an industrial strength emulator that
provides either a KS-10 or a KL-10 CPU (like our 2065, a mid-70s mainframe),
the latter running TOPS-20 v7.

[Note: Both SimH and KLH10 will run Tops-10 v7.04, the last released version
of that OS, if you prefer that.]

SimH has one real advantage, in that Windows binaries are freely available.
(KLH10 has never been ported from Unix to Windows; those of us who need to run
it in that environment use a virtual machine such as VMware to run a Linux or
BSD distribution in a window on our Windows desktop, and run KLH10 on top of
that.) For those more comfortable in the Windows universe, SimH is probably
the way to go.

For techno-friendly humanists who to use emulators for this purpose, it is
probably best to obtain a disk image which has already had the operating
system loaded and configured and some accounts set up, with a script or two
for adding accounts. This spreads the load, and provides security against the
loss of the sources in the future.

Another way to go is to set up free accounts on real or emulated hardware with
managers sympathetic to the goal, and thus avoid having to learn anything
about the administration of TOPS-20 or Tops-10. Such do exist; PDPplanet is
not the only choice, though it is the only real hardware currently running.

Perhaps the best way would be to combine the two.

Those are my thoughts on the subject.

Rich Alderson

unread,
Feb 12, 2008, 6:59:39 PM2/12/08
to
Eric Smith <er...@brouhaha.com> writes:

> denni...@gmail.com writes:

Technically, XKL LLC of Redmond, Washington, owns the 36-bit intellectual
property originated by Digital, but they have accepted the hobbyist license as
valid, since it originated prior to the change in ownership.

Rich Alderson

unread,
Feb 12, 2008, 7:08:56 PM2/12/08
to
denni...@gmail.com writes:

> On Feb 10, 11:39 pm, Rich Alderson <ne...@alderson.users.panix.com> wrote:

>> The original FORTRAN IV for the PDP-10 was a third-party compiler sold by
>> DEC, called F40. DEC eventually brought out their own compiler, FORTRA
>> (program names being stored in SIXBIT, six chars to a 36-bit word), which
>> underwent long development and which at version 7 became a Fortran-77
>> compiler. Two more versions, 10 and 11 (can you say "octal"? :), were
>> released before Digital canceled the product line.

> This is all fascinating stuff.

> Let me try to get my head around it by asking a few questions. As I
> see it, when Crowther was developing Adventure (during the 1975-76
> school year, according to testimony from his sister), he may have had
> access to several different compilers. Is that right?

If it was as late as that, he may have been using FORTRA on TOPS-20; I don't
know whether that was licensed back to BB&N for use on TENEX. It seems more
likely that he was still using F40.

> Are any of these compilers in the common domain?

> How might I contact the owners in order to gauge their willingness to
> assist my efforts to preserve, for future study, the environment in
> which Adventure was created?

> Is it possible to tell, from the slight changes Don Woods made to the
> advf4.77 files from March 11 to March 31, whether perhaps Woods and
> Crowther did not have access to the same compilers?

I don't know what Fortran compiler was in use at SAIL, which did not run a
DEC-supported operating system. The SAIL OS, WAITS, diverged from Tops-10
about 1972. It may have been F40, too.

> Or is it the case that, with the files in their present state and no
> executables to check, we don't yet know?

> I'd like to be as clear as possible about what we can and can't tell
> from the source code, so that when I bring the questions back to
> Crowther and Woods, I can be very clear about what needs clarification.

You can ask Crowther what OS he was running on, and ask each of them what
compiler he used.

Rich Alderson

unread,
Feb 12, 2008, 7:09:54 PM2/12/08
to
Eric Smith <er...@brouhaha.com> writes:

> Adam Thornton wrote:

Oh. I forgot about F10, which was a predecessor to FORTRA.

John W. Kennedy

unread,
Feb 12, 2008, 11:29:22 PM2/12/08
to
DKleinecke wrote:
> Crowther appears, on the basis of the source code, to have originally
> written Adventure with the output strings inline in the code. This
> version is also lost. The version that has come down to us has a
> database of messages which are selected by message numbers. There is
> no obvious reason for such a change.

In period, RAM could be a sufficient reason.


--
John W. Kennedy
"Compact is becoming contract,
Man only earns and pays."
-- Charles Williams. "Bors to Elayne: On the King's Coins"

denni...@gmail.com

unread,
Feb 13, 2008, 12:55:15 PM2/13/08
to
Thank you, very much, Rich, for introducing the subject to
alt.sys.pdp10 for me. Your clear explanation of the system has already
helped me to connect a few of the dots.

Just a bit of context for the alt.sys.pdp10 readers. I am donating my
time to a digital history project, funded by the Library of Congress,
that aims to develop methods for preserving digital culture for future
study by historians and archivists, who may not have the necessary
hardware to see historic programs running in their original context,
or the necessary technical knowledge to make do with emulators. I am a
humanities professor who has made a part-time study of Colossal Cave
Adventure, doing research that led to the recovery of Crowther's
original source code.

http://jerz.setonhill.edu/if/crowther/

An article which discusses the source code (for an audience of digital
humanities scholars) is here:

http://www.digitalhumanities.org/dhq/vol/001/2/000009.html

My immediate goal is to offer what advice I can to the senior members
of the research project what our options are as we aim to preserve,
for future study, the environment in which Crowther and Woods worked,
so that we can look closely at how hardware restrictions or
peculiarities of the programming language influenced the creative
choices they made as they developed "Colossal Cave."

At this stage in my research, I liken myself to an exchange student
who has taken a few semesters of a foreign language and then suddenly
finds himself wandering around in a strange city clinging to a
phrasebook. Eventually I hope to draw up a list of questions for Will
Crowther and Don Woods and some of the other early adapters of the
Adventure source code, but I thought it would be sensible for me to
see what I can turn up from various other sources, first.

Eric Smith

unread,
Feb 13, 2008, 3:05:19 PM2/13/08
to
Rich Alderson <ne...@alderson.users.panix.com> writes:
> Technically, XKL LLC of Redmond, Washington, owns the 36-bit intellectual
> property originated by Digital,

Really? The people I knew at Digital said that XKL bought a non-exclusive
license to it, not ownership. But it's not impossible that they were
mistaken.

Eric Smith

unread,
Feb 13, 2008, 3:06:17 PM2/13/08
to
Rich Alderson <ne...@alderson.users.panix.com> writes:
> Oh. I forgot about F10, which was a predecessor to FORTRA.

Was FORTRA just a name change for a later version of F10, or was it a
different code base?

William Schaub

unread,
Feb 13, 2008, 5:17:28 PM2/13/08
to

I would like to add that I have already compiled the adventure sources that
were recently posted on my TOPS-10 7.03 system running under simh.

You can find it as part of my simh disk image, and a tape image with the
binaries and sources at http://www.steubentech.com/~talon/pdp10


DKleinecke

unread,
Feb 14, 2008, 1:28:18 PM2/14/08
to
On Feb 10, 9:34 pm, dennis.j...@gmail.com wrote:
> On Feb 10, 9:31 pm, DKleinecke <dkleine...@gmail.com> wrote:
>
>
>
> > I am working with the FORTRAN source code that Crowther sent Woods. It
> > is a 79 room version and I call it the Crowther version. I call the
> > 140 room version the Woods version.
>
> Can you tell us a little more about this? Is this part of an academic
> project, or just something you're doing for its historical value? I'm
> thrilled to hear that someone who has the necessary skills is looking
> so closely at this very important code.

I am retired and I only do things because they interest me. I am
interested in the origins of ideas and have, for example, spend much
time on the origins of Islam. I have a special interest in computers
so I find the origins of computer things especially interesting.
Interactive fiction is one of the few older computer things where the
origins are documented publicly well enough that useful research can
be done. I like to think of what I do as literary criticism.

> > The FORTRAN source code shows evidence of a number of earlier
> > versions. The easiest to recognize of these I call paleo-Adventures A,
> > B , C and D.
>
> My own reading of the code does suggest some layering -- for instance,
> the vocabulary words for compass directions have a higher number than
> the words for many location-specific motion words ("downs" for
> "downstream" and the like). I have testimony that says that at the
> earliest, the game always recognized compass directions, so we can
> determine, by looking at what related items Crowther had recently
> added to the six different data tables, the rough shape of the game at
> the point when Crowther overhauled the code in order to move the
> compass navigation out of the code and into the data. But my ability
> to close-read Fortran doesn't permit me to see it in the kind of
> resolution you describe. So I'm eager to find out more -- either here
> or by e-mail.

I suggest we stick to the group for now - other people may be
interested.

I have to be diffident about this next comment. I recognize that you
have testimony, from people still living, that the compass directions
were always there. My problem is that I believe they are wrong. The
game itself starts out with 15 rooms all except three in a linear
order (there is now a right angle turn at the grate). The three
remaining rooms model the forest and do not obey their implied spatial
relationships.It seems likely to me that the compass directions may
have held in the forest where there are no other features to speak of
but they have no genuine function in the linear array. That is, there
may have been a few compass words in the game but they were not used
systematically. And the game was essentially linear - not two-
dimensional.

> > Even earlier there seems to have been a version where the
> > input was only a single word. This earliest version (I call it eo-
> > Adventure) is so poorly represented in what has survived that I
> > believe it cannot be reconstructed. The paleo-Adventures all can be
> > reconstructed without much difficulty.
>
> > However it is proper to describe them as lost. There is no concrete
> > evidence for their existence - only supposition. Not all of their
> > features can be reconstructed in a satisfactory way. For example, the
> > nugget and stairs puzzle seems to no longer make sense and I have not
> > been able to give it one that satisfies me..

You might ask Crowther exactly what the original form of the nugget
puzzle was. How was one supposed to get the nugget out the cavern?
Nowadays you carry it with you to the Y2 room and PLUGH back to the
house. My analysis says that the Y2 room was not in the A version and,
therefore, PLUGH was not. Was one, perhaps, able to XYZZY home from
more rooms? The relationship between XYZZY and PLUGH is interesting -
they are a doublet of the same idea. Why two?

On the whole I suspect Crowther cannot, with best of good will,
recover much of the details about what he did. I know that I could not
recover much of the inner history of a program I wrote at top speed
under stress in 1976. There are such programs and I hope nobody ever
asks me about them.

> As before, I'd love to hear your thoughts on this. If I can compile a
> bunch of well-formed questions, I'd be happy to bring them to Crowther
> and Woods. Both have been very kind to answer my questions, but I'd
> rather not approach them until I've tried sorting through what we can
> already deduce from the code, and I'm fully aware that I need the
> skills of Fortran programmers to help me make sense of the issue.

Of the paleo versions I have hypothesized the important oneas are A
and D. A is the first 26 rooms of the Crowther version (enough though
room 26 does not actually exist in the source). D is the first 63
rooms. Crowther was planning more cavern and partially implemented his
commands leaving the "under construction" sign in room 64. Room 79 is
entirely different and may indicate that, at least as far as rooms
went, Crowther has finished his addition. Room 79 is in the nature of
a quip directed against people who make a very common error at the
start of the game (they try to go downstream before they leave the
house).

There is another example of a room added piece-meal to correct a
"bug". Room 59 was added when Crowther realized that there had to be a
partner to room 40 going in the opposite direction.

I could go on and on.

> I also put the following to the whole community:
>
> What recommendations should I make to the digital archivists, towards
> the end of preserving for future study the environment in which
> Crowther and Woods worked, using open-source tools whenever
> possible?

Let us assume that things like FORTRAN compilers are already being
saved. What remains to be saved is the intellectual context. This
poses major problems. How could I explain what it felt like to be a
FORTRAN programmer in the early days. Actually Crowther was old-
fashioned for 1975-6. Structured programming was already widely
adopted (and Adventure is a, perhaps the, classical example of
spaghetti code) and the first personal computers were at hand. How can
I explain to anyone trained after 1975 that it was possible for
Crowther to produce such a mess?

I am reminded of the question I like to pose to people who cannot
remember WW II.
How can you imagine knowing that the Battle of Midway was going on and
not knowing who would win? I am not at all sure it can be done - but
we must give the historical imagination all the scope it needs and, of
course, all the documentation we can muster.

One question Crowther should be able to answer is: Why FORTRAN instead
of BASIC? or ALGOL? or PL/I? Were there any other viable alternatives?
He is just a couple of years too early for C or Pascal. Actually I
think BASIC was the only other serious possibility - assuming a time-
sharing system. GE time-sharing had an ALGOL but I suspect nobody ever
used it. PL/I was an IBM thing apart from Multics.

> Rather than run an automated translation tool on the existing source
> code, it seems most sensible to use a PDP-10 emulator. Would anyone
> be available to discuss with me (on a level that techno-friendly
> humanists can understand) what kind of technical setup an Adventure
> preservation project would need, or perhaps introduce this project to
> the PDP-10 emulation community so that I might seek help there, too?

I think this is feasible and should be done. If for no other reason
than to run regression tests on other implementations of the game.

DKleinecke

unread,
Feb 14, 2008, 1:34:50 PM2/14/08
to
On Feb 10, 7:37 pm, a...@fsf.net (Adam Thornton) wrote:
> In article <4f01d6ec-1f2c-477b-bbab-b339656c0...@i72g2000hsd.googlegroups.com>,

I was working for a time-sharing company that ran PDP-10's when
Crowther was writing Adventure and we considered TENEX obsolete. BBN
may have differed. My employer used software supplied by DEC - after a
lot of inhouse modifications.

DKleinecke

unread,
Feb 14, 2008, 1:46:37 PM2/14/08
to
On Feb 12, 2:38 pm, russo...@grace.speakeasy.net (Matthew T. Russotto)
wrote:
> In article <6003b762-dd95-444f-aa2b-228304cb5...@s8g2000prg.googlegroups.com>,

>
>
>
> <dennis.j...@gmail.com> wrote:
> >I'm a contributor (donating my time) to a research project funded by
> >the Library of Congress. The goal is to preserve digital culture, and
> >the first item on my group's list is Colossal Cave Adventure.
>
> >(News on the LoC project is available here...http://www.loc.gov/today/pr/2007/07-156.html

As I commented in another post:

That there are technical issues is true - but they are, in my mind,
easily surmounted. Especially if we know exactly what they are.

The hard part is WHY they coded what they did - not WHAT they coded.

The intellectual context of the period before the break that occurred
around 1975 (due to several factors) seems to be almost lost. The
paradigm changed and it changed so thoroughly that nowadays people
cannot even imagine how it once was - not so many years ago.

Rich Alderson

unread,
Feb 14, 2008, 2:22:23 PM2/14/08
to
DKleinecke <dklei...@gmail.com> writes:

> I was working for a time-sharing company that ran PDP-10's when Crowther was


> writing Adventure and we considered TENEX obsolete. BBN may have differed. My
> employer used software supplied by DEC - after a lot of inhouse
> modifications.

Since TENEX was created at BB&N, they continued to use and develop it for quite
some time after DEC licensed it, re-did some important parts and named the
result TOPS-20. Several important research groups around the world used TENEX
into the 1990s (the Institute for Mathematical Studies in the Social Sciences
at Stanford and Doug Engelbart's AUGMENT project, to name two).

(If Crowther really was writing this in 1975, TOPS-20 v1 was available but
still shipped some TENEX manuals along with the DEC documentation.)

Eric Smith

unread,
Feb 14, 2008, 3:41:30 PM2/14/08
to
DKleinecke <dklei...@gmail.com> writes:
> The hard part is WHY they coded what they did - not WHAT they coded.

If you're still talking about the changes that are necessary to make
it compile on a modern Fortran compiler, the WHY is that they did it
that way because that was how to make it work on the Fortran compiler
they had back then. For instance, they packed five characters per
INTEGER because that's how Fortran on the PDP-10 worked, not because
there was any other desirable reason to use five characters rather
than four or six.

Or is there some other "WHY" that you're asking about?

Matthew T. Russotto

unread,
Feb 14, 2008, 3:55:04 PM2/14/08
to
In article <054c61bb-8333-4054...@i12g2000prf.googlegroups.com>,

DKleinecke <dklei...@gmail.com> wrote:
>
>I have to be diffident about this next comment. I recognize that you
>have testimony, from people still living, that the compass directions
>were always there. My problem is that I believe they are wrong. The
>game itself starts out with 15 rooms all except three in a linear
>order (there is now a right angle turn at the grate).

But several of those early rooms reference compass directions.
Probably the answer to this lies not in the code, but in caver terminology;
would they have used compass directions to refer to interrelationships
among rooms? If so, likely Crowther planned them all along.

As you've pointed out, there was likely an earlier version with no
database and hardcoded descriptions and rooms. The re-write from that
version to the database version would have obscured early history.

>You might ask Crowther exactly what the original form of the nugget
>puzzle was. How was one supposed to get the nugget out the cavern?
>Nowadays you carry it with you to the Y2 room and PLUGH back to the
>house. My analysis says that the Y2 room was not in the A version and,
>therefore, PLUGH was not. Was one, perhaps, able to XYZZY home from
>more rooms? The relationship between XYZZY and PLUGH is interesting -
>they are a doublet of the same idea. Why two?
>

>Of the paleo versions I have hypothesized the important oneas are A
>and D. A is the first 26 rooms of the Crowther version (enough though
>room 26 does not actually exist in the source).

A reasonable conjecture, as the room descriptions give way to error
messages at that point. I'd further conjecture that this "A" version
was the point at which Crowther realized he was going to need a
database if he wanted to be able to keep expanding the thing
conveniently. The "A" version may not have had a solution to the
nugget puzzle.

Adam Thornton

unread,
Feb 14, 2008, 4:32:28 PM2/14/08
to
>There is another example of a room added piece-meal to correct a
>"bug". Room 59 was added when Crowther realized that there had to be a
>partner to room 40 going in the opposite direction.
>
>I could go on and on.

Then DO!

Seriously, this is the most fun I've had on raif for a long, long time.
This is great.

Adam

DKleinecke

unread,
Feb 15, 2008, 12:15:25 AM2/15/08
to
On Feb 14, 12:41 pm, Eric Smith <e...@brouhaha.com> wrote:

That is a little tiny piece of WHY - the technically constrained part.
Another such question would be why didn't Crowther use OOPS
techniques? Actually he might have - he was sitting very close
intellectually to where OOPS was born.

But I am asking another WHY as you suspect. I want to know why he
preferred one coding strategy over another and was that preference his
own personal aware choice or was it something forced on him from his
culture? Of course, there really isn't a single grand strategy here -
rather a multitude of little ones. Even detecting what decisions were
made/forced is not any easy question.

DKleinecke

unread,
Feb 15, 2008, 12:32:55 AM2/15/08
to
On Feb 14, 12:55 pm, russo...@grace.speakeasy.net (Matthew T.
Russotto) wrote:
> In article <054c61bb-8333-4054-8bdb-0c4692cf9...@i12g2000prf.googlegroups.com>,

I agree that in the upgrade from A to B was probably where the data
base appeared. I assume that initially it was only about rooms and
that objects and messages came later.

I observe that the first room which has clearly early links that are
only stated in terms of the compass grid in room 33 (Y2). My paleo-B
construct ends at room 32 and I would assume that the compass grid was
introduced as part of the upgrade from B to C (C is the least well
established of my paleo versions - it extends through room 39 leaving
the maze for paleo D).

Real cavers use compasses and Crowther was a real caver. But there is
no compass artifact in the game. One would think it almost as
important as the lamp.I believe that the documentary evidence is in
favor of a compass grid first used in paleo-Adventure C (or D if there
never was a C). Of course there may have been a handful of NSEWs in
the forest from the beginning.

DKleinecke

unread,
Feb 15, 2008, 12:34:54 AM2/15/08
to
On Feb 14, 1:32 pm, a...@fsf.net (Adam Thornton) wrote:
> In article <054c61bb-8333-4054-8bdb-0c4692cf9...@i12g2000prf.googlegroups.com>,
>
> DKleinecke <dkleine...@gmail.com> wrote:
> >There is another example of a room added piece-meal to correct a
> >"bug". Room 59 was added when Crowther realized that there had to be a
> >partner to room 40 going in the opposite direction.
>
> >I could go on and on.
>
> Then DO!
>
> Seriously, this is the most fun I've had on raif for a long, long time.
> This is great.
>
> Adam

Information overload. I do have a few other things about that need
doing.

Patience - more coming.

denni...@gmail.com

unread,
Feb 15, 2008, 12:38:51 AM2/15/08
to
On Feb 14, 1:34 pm, DKleinecke <dkleine...@gmail.com> wrote:
>
> I was working for a time-sharing company that ran PDP-10's when
> Crowther was writing Adventure and we considered TENEX obsolete. BBN
> may have differed. My employer used software supplied by DEC - after a
> lot of inhouse modifications.

Crowther was working from home... perhaps he only had permission to
take the out-of-date equipment home for his cartography hobby?

denni...@gmail.com

unread,
Feb 15, 2008, 2:25:30 AM2/15/08
to
On Feb 15, 12:34 am, DKleinecke <dkleine...@gmail.com> wrote:

> Information overload. I do have a few other things about that need
> doing.
>
> Patience - more coming.

The wait will likely be worth it.

Crowther and his family members say the he developed the game over a
period of several school breaks. Rooms 1-19 are all more or less
conventional rooms, and rooms 20-32 are pseudo-rooms that behave
differently ("YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK." or
"YOU CAN'T GET BY THE SNAKE"), and then we get some new rooms
beginning with 32 -- which is Y2, which includes the new magic word
PLUGH.

So it does seem like rooms 1-32 were polished up and tightened as a
unit, and 33-59 seems to be another similar unit (Y2, Hall of Mists,
and the infamous maze). I think (I'd have to re-play Crowther's
original) it is this section that describes a way to detour around the
snake, and that is a bit of evidence in favor of it being part of a
different creative effort, since the existence of the detour
diminishes the importance of the snake.

If Crowther did create the game without compass directions, and added
them later, then all motion in this hypothetical early version would
be controlled by a connection forged between the player's location, a
password such as "BUILDING" or "DOWNSTREAM", and an arbitrary
destination.

This insight gains weight when we consider that Crowther added the
four cardinal directions to the vocabulary database as items 43-46,
long after he added terms for more generic motion (such as concepts
for forward and back) and specific environmental details (such as
references to upstream and downstream).

In comparison to the grid-based Battleship-style games that were
available at the time, a version of ADVENT dependent solely on place-
names for navigation seems more like a hypertext, full of one-way
connections inseparable from words. Even the most mundane travel
would be accomplished by incantation.

If we assume the numerical order of the vocabulary words matches the
chronological oder in which Crowther worked, it seems that Crowther
felt a need to create a magic word XYZZY at #48, only after he had
standardized compass directions.

The compass directions do appear late in the list of verbs, but what
do we make of these items from table 6?

10 I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR
10 NEARBY OBJECTS.
11 I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME
11 SOMETHING IN THE GENERAL DIRECTION YOU WANT TO GO.
14 I ALWAYS UNDERSTAND COMPASS DIRECTIONS, OR YOU CAN NAME
14 A NEARBY THING TO HEAD THAT WAY.

In all cases, Crowther suggests that the player use compass directions
first, and the names of nearby things second. While MOOs continued
the tradition of navigation by objects "GO DOOR", IF all but dropped
the references to things.

Setting aside for the moment the testimony from the sources who say
Crowther's game had compass directions in it from the start, it may be
that Crowther added the compass directions after watching the very
first playtesters (presumably his daughters?) struggle with the game.
They were very young and simply may not remember, and perhaps those
who played early versions of the game as adults first saw the game
after Crowther added the compass directions.

The database consistently refers to navigation by place name first,
and compass direction later.

2 5 6 45 46
3 1 3 11 32 44

The first line translates as "When in room 2 ("AT HILL IN ROAD"), move
the player to room 5 ("YOU"RE IN FOREST") when the player types
vocabulary group 6 ("FORES"), 45 ("NORTH/N") or 46 ("SOUTH/S").

The second line translates as "When in room 3 ("YOU'RE INSIDE
BUILDING"), move the player to room 1 ("YOU'RE AT END OF ROAD AGAIN")
when the player types vocabulary group 3 ("ENTER/DOOR/GATE"), 11 ("OUT/
OUTSI/EXIT/LEAVE"), 32 ("OUTDO") or 44 ("WEST/W")

Note that the room numbers don't correspond to the numbers of
vocabulary words that are used for navigation. It seems a safe
assumption, however, that Crowther would pick the next highest
available number whenever he needed a new room or created a new
vocabulary concept. (When he added synonyms, he grouped similar words
together in the source code.

The game first mentions a diagonal direction in the description of
(room #66) Swiss Cheese Room, which features a NE exit (vocabulary
#60) back to the already-existing (room #65) Bedquilt. But before
Crowther created the vocabulary items for the other diagonal
directions (vocab #62-64), he created (vocab #61) "SLAB/SLAB", which
only lets the player travel from Bedquilt to the (room #86 SLAB ROOM).

The vocabulary list includes words for the concept "forward" and
"Back," (#7 and #8) which suggests a linear arrangement was important
in the early stage of the game. If you ignore the forest, it's a
straight shot from the building to the Hall of Mists (room 15), when
for the first time we have more than two directions to choose. I'm
puzzled, though, by, but we also have "STAIR" for #10, which seems
very out of place.

I'd be happy to hear more thoughts on all this.

The evidence that seems to support the late addition of the compass
directions would also support the argument that Crowther at some point
simply moved the code for motion by compass directions out of the code
and into the database, and that this change would be nearly as
dramatic -- in terms of signaling a change in the direction of the
game as represented in the database -- as the invention of compass
directions. If there is additional evidence in the code file that
supports the argument the compass was added late, I'd be happy to hear
it.

It's true that the presence of the compass in the game is only
implied, but so too is the presence of a pack of some sort to carry
all the gear. (Woods saw the need to implement an inventory command,
but Crowther's version doesn't include one.)

The database that begins by listing navigation by words and then adds
navigation by compass directions could also reflect the mental
processes of a man who knows the cave so well that one room conjures
up the memory of the next room, and the next, and the next, so that he
might first expand the database by an associative method, and while
composing the room descriptions come up with the key words that would
trigger word-based navigation, and then at some point afterwards
filling in the directional data.

Yet Crowther's role as cartographer for the Cave Research Foundation
suggests that he likely had access to the maps and survey data that he
created before he stopped caving, so if he was able to reconstruct the
cave this well from memory there is little doubt that his
reconstruction would have been informed by a deep knowledge of the
cave's three-dimensional layout. I can't imagine that he only used
compass navigation to lay out the game in his head, then actively
stripped the compass directions from the early map in order to replace
it with a brand-new, never-been-done-before verbal place-name
navigation technique. It seems far more believable to me that
Crowther added database-driven navigation-by-keyword to an existing
code-based shell that implemented navigation by compass directions.

I'm very willing to listen to any reactions.

Adam Thornton

unread,
Feb 15, 2008, 10:34:22 AM2/15/08
to
In article <3504de24-da54-42d0...@e10g2000prf.googlegroups.com>,

DKleinecke <dklei...@gmail.com> wrote:
>Real cavers use compasses and Crowther was a real caver. But there is
>no compass artifact in the game.

Which is in itself something I find very interesting, and at one time
intended to write a monograph on, but then, um, didn't.

One might make the claim that it's an implicit object, and that a caver
would no more go into a cave without a compass than he would without
pants (which are also not mentioned in the game [*]).

However, the same argument manifestly does NOT apply to the lamp. And
what's with the lamp, anyway? It's a battery-powered light source, but
AFAIK real cavers, then and maybe still, preferred carbide lamps. You
could certainly have implemented a time limit with a carbide lamp as
well as with a battery lamp.

>One would think it almost as
>important as the lamp.I believe that the documentary evidence is in
>favor of a compass grid first used in paleo-Adventure C (or D if there
>never was a C). Of course there may have been a handful of NSEWs in
>the forest from the beginning.

I also find it amusing, and I don't know whether it's deliberate, that
your sense of direction is unerring only once you're in the cave. That
is, sure, the map is tricky and going north and then south doesn't
always get you back to the same place, but once you map the connections,
they're fixed.

However: you get lost in the woods. Each turn you're in the woods, if I
remember correctly, there's a fifty percent chance of silently being
swapped into the *other* woods area. It's not a difficult maze,
granted, but it never happens once you're underground. Strange, eh?

Adam

[*] See +=3 for another take on this adventure trope.

DKleinecke

unread,
Feb 15, 2008, 12:18:19 PM2/15/08
to

These are essentially the same as the conclusions I reached. I assume
we have both reached the same conclusions (I differ over the status of
rooms 20-32 but that is a minor point and there be other similar minor
points I haven't spotted yet) independently. Thus our side is 2-0
against the still-hypothetical opposition.

The message table, Table 6, which you quote seems to have been formed
at some quite late point in the process by stripping out message text
that was inline in the code and appears to be, more or less, in the
order the messages had in the code. Thus I think it is not much help
in deducing the growth process.

What is your take on the dwarves? I suspect there is a two stage
development here. The first dwarf throws an axe - the later ones throw
knives. The protagonist does indeed throw the axe at the dwarves in
the version we have, but was that the original use for the axe? There
is evidence of a version where the protagonist threw rocks at the
dwarves. My guess is that, originally, the first dwarf was the only
dwarf and his axe attack was his only appearance. Perhaps Crowther
never even implemented what he had originally intended the axe for (a
wooden wall suggests itself) before he changed it into the weapon of
choice against dwarves.

I am a bit rushed and I will have to come back to this later.

DKleinecke

unread,
Feb 15, 2008, 12:28:33 PM2/15/08
to

It appears that Crowther had a teletype at home and access to a time-
sharing system. This was a fairly common setup. The time-sharing
system probably made no distinctions among its various users and, if
it was not heavily loaded (quite likely in evenings and on week-ends)
using the system would have been easy. There is a small question about
billing.

In the late 60's I ran a computer center with an attached time-sharing
system in a fairly complicated charge back system for computer use. I
changed the billing from the one recommended by the corporate
accountants so that people were billed for usage only during prime
time (8AM to 5PM on weekdays as I recall) and could use it for nothing
in off hours. The machine ran time-sharing without an operator so the
cost to us was essentially zero. Not very much free time was ever
used. In a situation like that Crowther could have easily down what he
did. BBN was probably somewhat similar.

DKleinecke

unread,
Feb 15, 2008, 12:38:17 PM2/15/08
to
On Feb 15, 7:34 am, a...@fsf.net (Adam Thornton) wrote:
> In article <3504de24-da54-42d0-8df5-62440a64f...@e10g2000prf.googlegroups.com>,

The maze is especially amusing in that respect. One can imagine moving
through the maze only with a compass. One could imagine puzzles
involving the loss of the compass.

One aspect of the game that is worth noticing is that no information
is ever given about how one entered a room. Hence, in the maze in
particular, you cannot go back (except in dead ends) because you don't
know how you came. Real people are, of course, not that dumb. I
believe that in at least one room of the maze you can arrive but none
of the exits go back where you came from.

Matthew T. Russotto

unread,
Feb 15, 2008, 3:12:28 PM2/15/08
to

>I observe that the first room which has clearly early links that are
>only stated in terms of the compass grid in room 33 (Y2).

What of the "awkward sloping east/west canyon", room 12?

I think N,E,S,W, UP, and DOWN must have been there from very early
on. The other four directions were probably introduced with the maze.

>Real cavers use compasses and Crowther was a real caver. But there is
>no compass artifact in the game. One would think it almost as
>important as the lamp.

Now there's an interesting thing -- there's no orientation in the game
at all, a convention that was rarely broken in future text adventures
(and it tended to turn out badly when it was). Thus no need for a
compass. It would be interesting to know why Crowther did that.

There's obvious possible reasons to do it (like not having to modify the
descriptions for each orientation), but possible reasons are not true
reasons.

Adam Thornton

unread,
Feb 15, 2008, 3:32:21 PM2/15/08
to
In article <7388baf0-e714-493c...@e25g2000prg.googlegroups.com>,

DKleinecke <dklei...@gmail.com> wrote:
>One aspect of the game that is worth noticing is that no information
>is ever given about how one entered a room. Hence, in the maze in
>particular, you cannot go back (except in dead ends) because you don't
>know how you came. Real people are, of course, not that dumb. I
>believe that in at least one room of the maze you can arrive but none
>of the exits go back where you came from.

I am not sure that an underground cave of natural passages would NOT be
so confusing that one might easily be "that dumb".

One can easily imagine a little chamber with more than ten passages
leading out, and the ten most likely ones do not include the one you
entered through.

But that's another item in my never-written monograph. The compass
directions and boxes-and-lines ubiquitous text-adventure-convention-map
leads us to picture the game world as a very clean, straight-corridor,
Cartesian space. In fact, real caves are very messy and confusing, and
"NE" is not going to be lined up at exactly 45 degrees on your compass.

Adam

Andrew Plotkin

unread,
Feb 15, 2008, 3:37:25 PM2/15/08
to
Here, Matthew T. Russotto <russ...@grace.speakeasy.net> wrote:
> In article <3504de24-da54-42d0...@e10g2000prf.googlegroups.com>,
> DKleinecke <dklei...@gmail.com> wrote:
>
> >I observe that the first room which has clearly early links that are
> >only stated in terms of the compass grid in room 33 (Y2).
>
> What of the "awkward sloping east/west canyon", room 12?
>
> I think N,E,S,W, UP, and DOWN must have been there from very early
> on. The other four directions were probably introduced with the maze.
>
> >Real cavers use compasses and Crowther was a real caver. But there is
> >no compass artifact in the game. One would think it almost as
> >important as the lamp.
>
> Now there's an interesting thing -- there's no orientation in the game
> at all, a convention that was rarely broken in future text adventures
> (and it tended to turn out badly when it was). Thus no need for a
> compass.

I don't follow your argument. A compass doesn't tell you which way you
are oriented. It tells you which way is north.

Adventure's level of abstraction implies that "now" -- say, the output
of a "look" action -- is not a single instant in time. It's the state
of inhabiting that room, which may include wandering around, examining
the notable features, peering out the exits, sitting down to consider
the next choice... etc. That's what the absence of orientation tells
me. But the sense of compass directions is constant.

--Z

--
"And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
*
If the Bush administration hasn't subjected you to searches without a
warrant, it's for one reason: they don't feel like it. Not because of
the Fourth Amendment.

Matthew T. Russotto

unread,
Feb 15, 2008, 5:55:27 PM2/15/08
to
In article <fp4t65$k5o$1...@reader2.panix.com>,

Andrew Plotkin <erky...@eblong.com> wrote:
>Here, Matthew T. Russotto <russ...@grace.speakeasy.net> wrote:
>> In article <3504de24-da54-42d0...@e10g2000prf.googlegroups.com>,
>> DKleinecke <dklei...@gmail.com> wrote:
>>
>> >I observe that the first room which has clearly early links that are
>> >only stated in terms of the compass grid in room 33 (Y2).
>>
>> What of the "awkward sloping east/west canyon", room 12?
>>
>> I think N,E,S,W, UP, and DOWN must have been there from very early
>> on. The other four directions were probably introduced with the maze.
>>
>> >Real cavers use compasses and Crowther was a real caver. But there is
>> >no compass artifact in the game. One would think it almost as
>> >important as the lamp.
>>
>> Now there's an interesting thing -- there's no orientation in the game
>> at all, a convention that was rarely broken in future text adventures
>> (and it tended to turn out badly when it was). Thus no need for a
>> compass.
>
>I don't follow your argument. A compass doesn't tell you which way you
>are oriented. It tells you which way is north.

Isn't that the same thing? If the compass is pointing to my left, I know
I'm facing east. If it's pointing at me, I'm facing south, etc. If I
always know which way I'm facing, I don't need a compass. If I can
follow compass directions without a compass, it follows that I know
(or can figure out) which way I'm facing.

>Adventure's level of abstraction implies that "now" -- say, the output
>of a "look" action -- is not a single instant in time. It's the state
>of inhabiting that room, which may include wandering around, examining
>the notable features, peering out the exits, sitting down to consider
>the next choice... etc. That's what the absence of orientation tells
>me. But the sense of compass directions is constant.

That's another possible interpretation. It's not really how I thought
when playing the game, but it may be how Crowther thought of it.

Eric Smith

unread,
Feb 15, 2008, 6:46:33 PM2/15/08
to
DKleinecke <dklei...@gmail.com> writes:
> That is a little tiny piece of WHY - the technically constrained part.
> Another such question would be why didn't Crowther use OOPS
> techniques? Actually he might have - he was sitting very close
> intellectually to where OOPS was born.

I can only guess, and that guess would be that

1) He might not have been aware of OOP.

2) If he was aware of it, he might not have wanted to bother with it,
since Fortran didn't offer any support for it. The only language
generally available on the PDP-10 at that time with some OOP support
was Simula-67, which might not have been available to him.

Eric

Eric Smith

unread,
Feb 15, 2008, 6:51:26 PM2/15/08