REVISIONS TO THE DOS VERSION (UNIX VERSION INCLUDES ALL DOS REVISIONS): (8/92) There was a misspelling of altar in textdata.dat. Somewhere in there was the sentence "On the alter are ...", and that was changed. Corrected textdata.dat, and used the encrypt convert program to get the correction into the program as distributed. Interestingly, the same spelling error was found in a version of Zork which was running on the local Vax. Later found another spelling error in the initial description of the EAT ME cake, and corrected that one by the same process. (10/92) The logic of this program was such as to prevent the long description of the egg from ever being printed. That was changed by modifying the source code in dso.for just slightly. The encryption was returned to the data base file, as in earlier versions. The problem of the egg description was found in older local vax versions, so it is probably not the fault of those who worked on this version of the game. (10/92) Because the new executable will work with older databases, the version number of the game was only bumped up by one edit number to V2.52 (10/92) Found another minor error. If the player said "take all" in an empty room, the game said "I could't find anything." The "could't" was changed to "couldn't", and textcnv was run again to regenerate the data base. This textcnv produces an encrypted data base file that matches the original distribution files (as indicated two paragraphs above). The encryption is very crackable since all bytes are xor'ed with decimal 10, but it at least prevents casual inspection. The original game encryption can be found in dsub.for, and it is considerably more elaborate, but is "commented out". To retain compatibility with the executable called V2.51 (or V2.5A if radix 50 worked here), the original encryption scheme was not returned to the executable file. (11/92) Used the Microsoft /4I2 option to force the default integer type to go to integer*2. Revised machdep.for and textcnv.for to reflect the new record length, and recompiled and linked. Data base file was significantly smaller, and executable was slightly larger than half the size of the executable obtained under the integer*4 default. No execution problems were observed, although it should be noted that the files dtext.dat and dsave.dat are no longer compatible with the executable that was originally distributed with this package in 11/90. (11/93) Another minor spelling error corrected for message which is issued if egg is intentionally broken. Should really change version number to reflect incompatibility with distribution dtext.dat file. UNIX VERSION REVISIONS (NOT INCLUDED IN ORIGINAL DOS VERSION): (02/94) Game was moved back to unix (linux), and the source files were changed appropriately so that the f2c compiler could handle them. It was found that the f2c -I2 option forced some internal constants to go to short integers and that C constant expressions suffered from integer overflow in places. The -I2 option was dropped (returning the default integer type to 32 bit) to correct this, but the size of the executable didn't seem to suffer greatly as a result. The changes will be found in machdep.f (where they ideally should be confined), and they involve revisions to the names of bitwise functions (e.g. IEOR in vax / dos fortran becomes XOR in unix f2c fortran), as well as a change in the data base record length, ZRECL. The time and date functions contained in machdep.f could not be found in the f2c library. As a result, the linux version can't keep track of how long the player has been playing the game (the "time" command in dungeon always returns the message "you have been playing Dungeon for 0 minutes"), because IDATE and ITIME could not be set to call an appropriate f2c routine. This is undoubtedly "fixable" by writing a C interface to the system timekeeping functions. Because the game is now identical to the original distribution, the version number was returned to 2.51 (2.5A in radix 50). (4/94) An interface to the system timekeeping functions was added so that the "time" command in dungeon would once again work. The interface is named gettim.C, and it provides a fortran-callable subroutine which can retrieve the time of day in GMT. It works well with f2c compilations, but its usefulness with other fortran com- pilers is unknown. The upper case suffix of .C was chosen so that all c programs generated by f2c could be removed without touching the gettim.C program. (4/94) The version number was changed to 2.52, and optimization was added to the c compilation step (optimization had caused some problems with an older gnu c compiler). The size of the executables was sig- nificantly reduced by using optimization. (9/98) A Makefile was added to the distribution (tested under Linux, Irix 6.2, and FreeBSD 2.2.2). (10/98) A bug was found in objcts.f and in nobjs.f, where PRSO could get out of bounds for a few situations where ODO2 is looked up in array ODESC2 but then isn't used. The array bounds error can cause a segmentation fault on some unix systems (Linux), but apparently went unnoticed for years on many other systems where the bounds error caused no problem. Range-checking IF statements were added to work around the problem.