I started working on this article in 2000, thinking I'd be able to slap something together for the 25th anniversary of Colossal Cave Adventure. But writing it has turned out to be an addictive Babelfish puzzle. The preliminary research I did turned into the IF Bibliography, which also led to a glossary for the IF Theorybook. The book is in cryonic sleep at the moment but the glossary thrives at the IF WIki.
Reading the post Andrew Plotkin published several years ago about all the cave research he did in preparation for writing Hunter, in Darkness made me start daydreaming about an actual visit to the real Colossal Cave was a possibility, and watching a library copy of Raiders of the Lost Ark made me fantasize about finding Crowther's original source code.
This year marks the 30th anniversary of Adventure, and I think the article was worth the wait.
The full text (with about 40 photos from in and around the real Colossal Cave) is available online. See the link after the abstract.
Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original "Adventure" in Code and in Kentucky Digital Humanities Quarterly, 1.1 (2007)
Abstract Because so little primary historical work has been done on the classic text computer game "Colossal Cave Adventure", academic and popular references to it frequently perpetuate inaccuracies. "Adventure" was the first in a series of text-based games ("interactive fiction") that emphasize exploring, puzzles, and story, typically in a fantasy setting; these games had a significant cultural impact in the late 1970s and a significant commercial presence in the early 1980s. Will Crowther based his program on a real cave in Kentucky; Don Woods expanded this version significantly. The expanded work has been examined as an occasion for narrative encounters (Buckles 1985) and as an aesthetic masterpiece of logic and utility (Knuth 1998); however, previous attempts to assess the significance of "Adventure" remain incomplete without access to Crowther's original source code and Crowther's original source cave. Accordingly, this paper analyzes previously unpublished files recovered from a backup of Woods's student account at Stanford, and documents an excursion to the real Colossal Cave in Kentucky in 2005. In addition, new interviews with Crowther, Woods, and their associates (particularly members of Crowther's family) provide new insights on the precise nature of Woods's significant contributions. Real locations in the cave and several artifacts (such as an iron rod and an axe head) correspond to their representation in Crowther's version; however, by May of 1977, Woods had expanded the game to include numerous locations that he invented, along with significant technical innovations (such as scorekeeping and a player inventory). Sources that incorrectly date Crowther's original to 1972 or 1974, or that identify it as a cartographic data file with no game or fantasy elements, are sourced thinly if at all. The new evidence establishes that Crowther wrote the game during the 1975-76 academic year and probably abandoned it in early 1976. The original game employed magic, humor, simple combat, and basic puzzles, all of which Woods greatly expanded. While Crowther remained largely faithful to the geography of the real cave, his original did introduce subtle changes to the environment in order to improve the gameplay.
Unbelievable !!! a true Relic of the history of gaming !
I'm without words... Now rummaging this ancient but very significant piece of code, it's remarkable that is very tiny compared to Woods's 350, 13k code and 19k data.
I can suggest you to upload them in their proper place, that is, the if-archive ?
HOLY MOLY. This is amazing work. I especially love the photographs illustrating all the famous places in Adventure: the cobble crawl, the window on the pit, the hall of mists, the maze of twisty passages all alike. (You got to cave with Roger Brucker, too -- I hope you know how fortunate you are.) And you found the original Will Crowther FORTRAN source code, long thought to be lost forever, and analyzed it. Congratulations on a historical achievement and a great article!
dennis.j...@gmail.com wrote: > Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original > "Adventure" in Code and in Kentucky > Digital Humanities Quarterly, 1.1 (2007)
It is clear on a single reading that this is the most important single paper ever written on the history of interactive fiction.
David Kinder wrote: > Wow, this is exceptionally cool. Now we just need to find a way to get the > Crowther version running again ...
> David
yes, just out of curiosity, because I don't know anything about Fortran, is it possible to compile those sources with for example g77 (gnu fortran), do we have to edit / adapt / modify the source before ?
Eric Forgeot wrote: > yes, just out of curiosity, because I don't know anything about Fortran, is > it possible to compile those sources with for example g77 (gnu fortran), do > we have to edit / adapt / modify the source before ?
Before using a standard Fortran compiler there would definitely need to be modification: it was written in Fortran-IV (probably), which is much older than the standard Fortran-77 that g77 understands. Given what the known original Crowther/Woods 350 point code looks like, it also has dependencies on the PDP-10 architecture (36 bit words).
Eric Forgeot <use_form_on_webs...@anamnese.fr.st> writes: > David Kinder wrote:
>> Wow, this is exceptionally cool. Now we just need to find a way to get the >> Crowther version running again ...
>> David
> yes, just out of curiosity, because I don't know anything about Fortran, is > it possible to compile those sources with for example g77 (gnu fortran), do > we have to edit / adapt / modify the source before ?
It'll need some changing, I think, but basically it ought to be possible, yes. I spotted an .XOR., which isn't standard, I think, and the continuations in:
COMMON RTEXT,LLINE DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100) 1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22) 2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000) 3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10)
Aren't right. It should be
COMMON RTEXT,LLINE DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100) 1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22) 2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000) 3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10)
>> Wow, this is exceptionally cool. Now we just need to find a way to get the >> Crowther version running again ...
>> David
> yes, just out of curiosity, because I don't know anything about Fortran, is > it possible to compile those sources with for example g77 (gnu fortran), do > we have to edit / adapt / modify the source before ?
I suggest of using Bob Supnik's SIMH emulator, whose is an excellent emulator of the PDP-10 (and other machines...) Also, there's floating on the net the binaries of the OS for the -10
Another resource can be Al Kossow's archive of manuals of 50s to 70s machines, surely there is the full documentation on the PDP-10 Fortran IV
I think that there's enough resources for understanding, compiling, and running Adventure 0 ;)
On Sat, 11 Aug 2007 19:01:42 +0000, David Kinder wrote: > Eric Forgeot wrote: >> yes, just out of curiosity, because I don't know anything about Fortran, is >> it possible to compile those sources with for example g77 (gnu fortran), do >> we have to edit / adapt / modify the source before ?
> Before using a standard Fortran compiler there would definitely need to be > modification: it was written in Fortran-IV (probably), which is much older > than the standard Fortran-77 that g77 understands. Given what the known > original Crowther/Woods 350 point code looks like, it also has dependencies > on the PDP-10 architecture (36 bit words).
> Not impossible to fix, but not trivial, either.
> David
I know next to nothing about Fortran, but could it be Fortran 66 instead of IV? I believe g77 is able to compile Fortran 66 code.
If anyone is considering porting this, comp.lang.fortran looks like it has an active and helpful community.
On Aug 11, 3:33 pm, Stephen Gilbert <stgilb...@gmail.com> wrote:
> I know next to nothing about Fortran, but could it be Fortran 66 instead > of IV? I believe g77 is able to compile Fortran 66 code.
That the file names end with 'f4' is probably a clue. The code I've looked at isn't particularly complicated and there isn't that much of it; I don't think it would be either difficult or tedious to port it.
...Which one of these files is the "Adventure" file??? I don't understand why there are FIVE files (is this a feature of FORTRAN?)...
--_____ %%%%%%%%%%% "Glenn P.," <C128UserDELETE-T...@FVI.Net> %%%%%%%%%%% {~._.~} ----------------------------------------------------------------- _( Y )_ There was no path to follow through the wood. The branches of (:_~*~_:) the trees hung low and thick, and the earth beneath them was damp (_)-(_) and dark and dank, and no birds sang. ========= "This," said Katherine, "is what I would call a tulgey wood." ///////// "Don't!" cried Martha. "Suppose something came whiffling ========= through it!" --EAGER, Edward: "Half Magic" (Chapter IV).
:: Take Note Of The Spam Block On My E-Mail Address! ::
There are five files because Don Woods started editing them. As the article explains, there is a data file and a code file. The 77-03-11 files should be the last version by Crowther.
On Aug 12, 6:25 pm, "Glenn P.," <C128UserDELETE-T...@FVI.Net> wrote:
> ...Which one of these files is the "Adventure" file??? I don't understand > why there are FIVE files (is this a feature of FORTRAN?)...
> --_____ %%%%%%%%%%% "Glenn P.," <C128UserDELETE-T...@FVI.Net> %%%%%%%%%%% > {~._.~} ----------------------------------------------------------------- > _( Y )_ There was no path to follow through the wood. The branches of > (:_~*~_:) the trees hung low and thick, and the earth beneath them was damp > (_)-(_) and dark and dank, and no birds sang. > ========= "This," said Katherine, "is what I would call a tulgey wood." > ///////// "Don't!" cried Martha. "Suppose something came whiffling > ========= through it!" --EAGER, Edward: "Half Magic" (Chapter IV).
> :: Take Note Of The Spam Block On My E-Mail Address! ::
> I started working on this article in 2000, thinking I'd be able to > slap something together for the 25th anniversary of Colossal Cave > Adventure. But writing it has turned out to be an addictive Babelfish > puzzle. The preliminary research I did turned into the IF > Bibliography, which also led to a glossary for the IF Theorybook. The > book is in cryonic sleep at the moment but the glossary thrives at the > IF WIki.
> Reading the post Andrew Plotkin published several years ago about all > the cave research he did in preparation for writing Hunter, in > Darkness made me start daydreaming about an actual visit to the real > Colossal Cave was a possibility, and watching a library copy of > Raiders of the Lost Ark made me fantasize about finding Crowther's > original source code.
> This year marks the 30th anniversary of Adventure, and I think the > article was worth the wait.
> The full text (with about 40 photos from in and around the real > Colossal Cave) is available online. See the link after the abstract.
> Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original > "Adventure" in Code and in Kentucky > Digital Humanities Quarterly, 1.1 (2007)
> Abstract > Because so little primary historical work has been done on the classic > text computer game "Colossal Cave Adventure", academic and popular > references to it frequently perpetuate inaccuracies. "Adventure" was > the first in a series of text-based games ("interactive fiction") that > emphasize exploring, puzzles, and story, typically in a fantasy > setting; these games had a significant cultural impact in the late > 1970s and a significant commercial presence in the early 1980s. Will > Crowther based his program on a real cave in Kentucky; Don Woods > expanded this version significantly. The expanded work has been > examined as an occasion for narrative encounters (Buckles 1985) and as > an aesthetic masterpiece of logic and utility (Knuth 1998); however, > previous attempts to assess the significance of "Adventure" remain > incomplete without access to Crowther's original source code and > Crowther's original source cave. Accordingly, this paper analyzes > previously unpublished files recovered from a backup of Woods's > student account at Stanford, and documents an excursion to the real > Colossal Cave in Kentucky in 2005. In addition, new interviews with > Crowther, Woods, and their associates (particularly members of > Crowther's family) provide new insights on the precise nature of > Woods's significant contributions. Real locations in the cave and > several artifacts (such as an iron rod and an axe head) correspond to > their representation in Crowther's version; however, by May of 1977, > Woods had expanded the game to include numerous locations that he > invented, along with significant technical innovations (such as > scorekeeping and a player inventory). Sources that incorrectly date > Crowther's original to 1972 or 1974, or that identify it as a > cartographic data file with no game or fantasy elements, are sourced > thinly if at all. The new evidence establishes that Crowther wrote the > game during the 1975-76 academic year and probably abandoned it in > early 1976. The original game employed magic, humor, simple combat, > and basic puzzles, all of which Woods greatly expanded. While Crowther > remained largely faithful to the geography of the real cave, his > original did introduce subtle changes to the environment in order to > improve the gameplay.
> The above URL is a test site, but one of the journal editors has > posted this URL to his blog, so I'm considering the article officially > published now.
> I imagine the article will eventually occur on the journal's main > site, at
Bruce Stephens <bruce+use...@cenderis.demon.co.uk> writes: >It'll need some changing, I think, but basically it ought to be >possible, yes. I spotted an .XOR., which isn't standard, I think, and >the continuations in:
Once you spot that strings are stored as a sequence of 7-bit characters packed 5 to a (36-bit) machine word (with the lowest bit ignored), I think the most wretched hive of scum and villany is in GETIN, which is a very PDP-10 dependent subroutine for accepting input and breaking it into two words. It would have to be completely rewritten for any other computer, no matter what language you use. That's where all the bit-magic of .XOR. and SHIFT is, at least.
A lot of the weird logic associated with text in that program is trying to work with the way strings are stored. A string is an array of 36-bit integers, each integer holding 5 characters. If the string isn't a multiple of 5 characters in length, spaces are added to the end. All of the long text strings are stored in a single two-dimensional array called LLINE. The first two integers in each LLINE string aren't holding characters; they store an indication of whether this string is part of a larger paragraph (LLINE(n,1)), and how long the string is in integers (LLINE(n,2)), respectively. The actual text for string LLINE(n) starts at LLINE(n,3).
The funny thing is ... I thought PDP-10 character codes were six bits, not seven. Thus filenames could be up to 6 characters long: e.g. ADVENT. But that 5-character limitation in strings explains why, in the original Adventure, all words were unique to only five letters -- and why we have PLUGH and XYZZY rather than REZROV.
A FORTRAN compiler or translator would work on that code, but only for the main "logic" of the game -- i.e. lines 1100 to the END of the main program, excluding anything having to do with printing or comparing strings. When you see something like INTEGER A ... get input into A ... IF (A .EQ. 'XYZZY') you are sunk, because the assumption is that 'XYZZY' is a single number and can be manipulated like one. An intelligent porter sees that it's only used for strings and changes it to a string variable; but "f2c" is going to barf and die.
In article <f9o4pr$mv...@reader2.panix.com>, David Librik <lib...@panix.com> wrote:
>Once you spot that strings are stored as a sequence of 7-bit >characters packed 5 to a (36-bit) machine word (with the lowest >bit ignored), I think the most wretched hive of scum and villany >is in GETIN, which is a very PDP-10 dependent subroutine for >accepting input and breaking it into two words. It would have to >be completely rewritten for any other computer, no matter what >language you use. That's where all the bit-magic of .XOR. and >SHIFT is, at least.
Correct. But there's an additional joker in GETIN.
>number and can be manipulated like one. An intelligent porter >sees that it's only used for strings and changes it to a string >variable; but "f2c" is going to barf and die.
Fortunately, there are only a few variables which need to be declared "CHARACTER*5".
I've got it almost working under g77. I broke LLINE into three arrays and fixed the "G" and "A" formats. I also changed the data file from tab-delimited fields to fixed-length fields, changed the IFILE to OPEN, and implemented RAN.
The additional joker is holding me back. The program reads using a format 4A5 into an array A, and apparently ENTER STREAM is to be returned such that A(1)='ENTER' and A(2)='STREAM'. But elsewhere in GETIN it expects the spaces to appear literally. So I'm not sure how that format was supposed to work.
There's also a bug in the 77-03-11 GETIN. -- There's no such thing as a free lunch, but certain accounting practices can result in a fully-depreciated one.
In article <hZadndM_m_lENCLbnZ2dnUVZ_g6dn...@speakeasy.net>, Matthew T. Russotto <russo...@grace.speakeasy.net> wrote:
>The additional joker is holding me back. The program reads using a >format 4A5 into an array A, and apparently >ENTER STREAM >is to be returned such that A(1)='ENTER' and A(2)='STREAM'. But >elsewhere in GETIN it expects the spaces to appear literally. So I'm >not sure how that format was supposed to work.
Nevermind. It appears this is actually a bug in the original code. The later versions correct it. -- There's no such thing as a free lunch, but certain accounting practices can result in a fully-depreciated one.
russo...@grace.speakeasy.net (Matthew T. Russotto) writes:
>Nevermind. It appears this is actually a bug in the original code. >The later versions correct it.
There are a number of bugs in that program, unfortunately.
Is it better to present the most accurate representation of Crowther's original code, or fix the mistakes in order to give the program he intended, a game you can actually play?
Perhaps as a compromise one can implement the immediate bug fixes that Don Woods had to add (in 77-03-31) to get it running.
In article <f9oc57$67...@reader2.panix.com>, David Librik <lib...@panix.com> wrote:
>russo...@grace.speakeasy.net (Matthew T. Russotto) writes: >>Nevermind. It appears this is actually a bug in the original code. >>The later versions correct it.
>There are a number of bugs in that program, unfortunately.
>Is it better to present the most accurate representation of >Crowther's original code, or fix the mistakes in order to give >the program he intended, a game you can actually play?
>Perhaps as a compromise one can implement the immediate bug >fixes that Don Woods had to add (in 77-03-31) to get it running.
Why compromise when you can have both?
Compilable (g77) versions of 77-03-11 and 77-03-31:
If anybody with the technical know-how could rig this up to play in a Java applet, or through a web interface, I'd be grateful. I'd be happy to arrange to host the program somewhere else.
Note for OS X users: The OS X version of gcc does not seem to include g77, but I found a binary here: http://hpc.sourceforge.net/ You should also be able to get it with fink or something. Also note that if you download the packages in Safari, it will add a spurious ".txt" to the .dat files; you need to remove this, but otherwise these compile fine.
By the way, was I the only one who hadn't looked at Fortran code in at least 15 years and whose brain initially tried to parse Fortran's dotted comparisons as objects and methods? :)