diff --git a/.gitignore b/.gitignore index 0749dd7..30501bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /zork-1.0.2.tar.gz /zork-1.0.3.tar.gz +/zork-1.1.0.tar.gz diff --git a/README.md b/README.md index 62d8c4d..99a421f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,133 @@ -zork -==== +``` +Welcome to Dungeon. This version created 11-MAR-91. +You are in an open field west of a big white house with a boarded front door. +There is a small mailbox here. +> +``` -Public Domain original DUNGEON game (Zork I) +# DUNGEON (AKA Zork) + +**Public Domain Source Code for the Mainframe Game "Dungeon"** + +This repository contains the Public Domain source code for *Dungeon*, the mainframe version of the game that served as the precursor to Infocom's commercial *Zork* trilogy. +This codebase is a C port derived from the FORTRAN source of **Zork 2.6**. -## About +## Installation -Public Domain source code to the original DUNGEON game (Zork I). -Released to the PD by Infocom. -Includes source files, headers, and information. +### Fedora Linux -This version of Dungeon was modified from FORTRAN to C. -The original was written in DEC FORTRAN, translated from MDL. -It was then translated to f77 for UN\*X systems, from which it was translated to C. -The C translation was done with the help of f2c, the FORTRAN to C translator written by David Gay (AT&T Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University), and Norm Schryer (AT&T Bell Labs). +This package is available in the official Fedora Linux repositories. +You can install it directly via the command-line: + +```bash +sudo dnf install zork +``` + +### Building from Source + +To build the game from the source files in this repository: + +```bash +make +``` + + +## Modern Maintainership & Philosophy (2013-12 to present) + +**Current Maintainers:** + +* Shane Thomas ([@devshane](https://github.com/devshane)) +* Jan Drögehoff ([@Jan200101](https://github.com/Jan200101)) +* Justin Wheeler ([@justwheel](https://github.com/justwheel)) + +**Project Philosophy:** + +This project utilizes the FORTRAN source of *Dungeon* (Zork 2.6) as its foundation. +The primary design goal is code preservation. +We aim to maintain the logic and behavior of the game as accurately as possible while updating the codebase to compile and run on modern C compilers and operating systems. + + +## History of the Implementation + +This version of *Dungeon* has been modified from FORTRAN to C. +The historical lineage of this code is as follows: + +1. **Original Development (MDL)**: + The original game (initially titled *Zork*) was written in the MDL programming language (MUDDLE) at the MIT Laboratory for Computer Science. +2. **PDP-11 Translation (FORTRAN)**: + Bob Supnik translated the MDL source into DEC FORTRAN for the PDP-11, renaming the game *Dungeon*. +3. **UNIX Port (f77)**: + The FORTRAN version was subsequently ported to `f77` for UNIX systems. +4. **C Translation**: + The C translation was generated from the `f77` version using `f2c`. + `f2c` is a FORTRAN-to-C translator written by David Gay (AT&T Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University), and Norm Schryer (AT&T Bell Labs). + +*Note on Zork I:* +While often conflated, *Dungeon* differs from *Zork I*. +*Zork I* is a microcomputer adaptation comprising approximately one-third of the original mainframe game's map and puzzles. +*Dungeon* represents the more complete, albeit earlier, mainframe experience. + +### I. From original game documentation + +To: Dungeon Players +From: "The Translator" +Subj: Game Information +Date: 8-OCT-80 + + +This is the first (and last) source release of the PDP-11 version of +Dungeon. + +Please note that Dungeon has been superceded by the game ZORK(tm). +The following is an extract from the new product announcement for +ZORK in the September, 1980 issue of the RT-11 SIG newsletter: + + "'ZORK: The Great Underground Empire - Part I' ...was developed + by the original authors based on their ZORK (Dungeon) game for + the PDP-10. It features a greatly improved parser; command + input and transcript output files; SAVEs to any device and + file name; and adaptation to different terminal types, + including a status line on VT100s. Note: this is not the + FORTRAN version that has been available through DECUS. This + version has been completely rewritten to run efficiently on + small machines - up to 10 times as fast as the DECUS version. + + ...ZORK runs under RT-ll, HT-ll, or RSTS/E and requires as + little as 20K words of memory and a single floppy disk drive. + The game package, consisting of an RX01-format diskette and + an instruction booklet, is available from Infocom, Inc., + P.O. Box 120, Kendall Station, Cambridge, Ma. 02142." + +ZORK(tm) is a trademark of Infocom, Inc. It is available for several +popular personal computers as well as for the PDP-ll. + +### II. DEC FORTRAN to f77 Conversion (1981-11-17) + +The conversion from DEC FORTRAN to Unix f77 was done by **Randy Dietrich, Lynn Cochran and Sig Peterson**. +Much hacking was done to get it to fit in the limited address space of a PDP-11/44 (split I/D). +Suffice it to say that by leaving out the debugging package and not linking in the f77 i/o library, they managed to get it to run. + +### III. PDP to VAX (1985-12) + +Based on the work of Randy, Lynn and Sig, **Bill Randle** folded in the full save/restore functions and the game debugging package (gdt) into the PDP version to create a Vax/Unix version. +This version also uses f77 i/o, thus eliminating the extra speak and listen processes needed on the PDP. + +### IV. Cleanup I (1986-12-11) + +**John Gilmore** (hoptoad!gnu) cleaned up the source files by moving most of the common declarations into include files and added comments from the original (_FORTRAN or MDL?_) source. +His efforts are greatly appreciated. + +### V. Cleanup II (1987-02-09) + +**Bill Randle** added the PDP dependencies back into the Vax source files with `#ifdef`s in order to have just one set of sources. +Previously, there were two sets of source: one for the PDP and one for the Vax. +In addition, a shell escape of the form `!cmd` was added and the wizard can enter the gdt without having to recompile the source. +Finally, a man page was generated, based on the `dungeon.doc` file. + +### VI. f77 to C (1991-03-11) + +**Ian Lance Taylor** used the `f2c` translator to generate C source code. +The resulting code was modified to remove the FORTRAN I/O library, to add simple more processing, and to change the format of the database file. +**Andre Srinivasan** helped test it. +**Jonathan Mark** made it work under MS-DOS and Microsoft C. diff --git a/sources b/sources index 11c813a..61464b3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (zork-1.0.3.tar.gz) = def2063a01880eac1fac97a9fb2b4539202f13f9e18ed96275e23d7f73fefa68eff1b62ac256065aaf7603ea4dae3d84488fe8c3757881eb25eea8795e7c7d6a +SHA512 (zork-1.1.0.tar.gz) = e72082b4e2e3ff8a68588ce19409fa132921e16e4d15cfef84c9471b3ac989a4d1c251bf2518ddfa7770b803b7dfc40c264377d5a1310688551413b73471cb3d diff --git a/zork-tweak-makefile.patch b/zork-tweak-makefile.patch index 6a81080..6ed401d 100644 --- a/zork-tweak-makefile.patch +++ b/zork-tweak-makefile.patch @@ -1,5 +1,5 @@ From ce241188ca387a42c3ab09454c881acfe30c955e Mon Sep 17 00:00:00 2001 -From: "Justin W. Flory" +From: "Justin Wheeler" Date: Tue, 30 Apr 2019 15:36:07 -0400 Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package @@ -8,11 +8,9 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package dinit.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) -diff --git a/Makefile b/Makefile -index 88305ce..aae1916 100644 --- a/Makefile +++ b/Makefile -@@ -42,7 +42,7 @@ TERMFLAG = +@@ -42,7 +42,7 @@ # Uncomment the following line if you want to have access to the game # debugging tool. This is invoked by typing "gdt". It is not much # use except for debugging. @@ -21,8 +19,8 @@ index 88305ce..aae1916 100644 # Compilation flags CFLAGS = -g #-static -@@ -69,7 +69,7 @@ dungeon: $(OBJS) dtextc.dat - $(CC) $(CFLAGS) -o zork $(OBJS) $(LIBS) +@@ -70,7 +70,7 @@ + $(CC) $(CFLAGS) -o zork $(OBJS) $(LDFLAGS) $(LIBS) install: zork dtextc.dat - mkdir -p $(BINDIR) $(LIBDIR) $(MANDIR)/man6 @@ -30,7 +28,7 @@ index 88305ce..aae1916 100644 cp zork $(BINDIR) cp dtextc.dat $(DATADIR) cp dungeon.6 $(MANDIR)/man6/ -@@ -93,7 +93,7 @@ local.o: local.c funcs.h vars.h +@@ -94,7 +94,7 @@ $(CC) $(CFLAGS) $(GDTFLAG) -c local.c supp.o: supp.c funcs.h vars.h @@ -39,11 +37,9 @@ index 88305ce..aae1916 100644 actors.o: funcs.h vars.h ballop.o: funcs.h vars.h -diff --git a/dinit.c b/dinit.c -index d687cf4..cda5878 100644 --- a/dinit.c +++ b/dinit.c -@@ -24,7 +24,7 @@ FILE *dbfile; +@@ -24,7 +24,7 @@ #define TEXTFILE "lib:dtextc.dat" #else /* ! __AMOS__ */ #ifdef unix diff --git a/zork.spec b/zork.spec index 8fcb209..ae81461 100644 --- a/zork.spec +++ b/zork.spec @@ -1,9 +1,9 @@ Name: zork -Version: 1.0.3 -Release: 7%{?dist} -Summary: Public Domain original DUNGEON game (Zork I) +Version: 1.1.0 +Release: %autorelease +Summary: Public Domain original DUNGEON game (AKA, Zork) -License: Public Domain +License: LicenseRef-Fedora-Public-Domain URL: https://github.com/devshane/zork Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz @@ -15,24 +15,17 @@ BuildRequires: ncurses-devel %description -Public Domain source code to the original DUNGEON game (Zork I). Released to -the PD by Infocom. Includes source files, headers, and information. - -This version of Dungeon was modified from FORTRAN to C. The original was -written in DEC FORTRAN, translated from MDL. It was then translated to f77 for -UN*X systems, from which it was translated to C. The C translation was done -with the help of f2c, the FORTRAN to C translator written by David Gay (AT&T -Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University), -and Norm Schryer (AT&T Bell Labs). +Public Domain Source Code for the Mainframe Game "Dungeon". This repository contains the Public Domain source code for +Dungeon, the mainframe version of the game that served as the precursor to Infocom's commercial Zork trilogy. This +codebase is a C port derived from the FORTRAN source of Zork 2.6. %prep -%global _hardened_build 1 %autosetup %build %make_build \ - CFLAGS="%{optflags}" \ + CFLAGS="%{optflags} -std=c17" \ DATADIR="%{_datadir}/%{name}" \ LDFLAGS="%{__global_ldflags}" @@ -56,6 +49,30 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6 %changelog +* Tue Jun 30 2026 Justin Wheeler - 1.1.0-1 +- Update to v1.1.0 +- Upstream bug fixes: out-of-bounds array access, missing unistd.h header, + localtime prototype, curses header preprocessor guard +- Upstream build improvements: LDFLAGS support in Makefile +- Migrate to %%autorelease +- Remove unnecessary %%global _hardened_build 1 (default since F23) + +* Sun Feb 22 2026 Justin Wheeler - 1.0.3-12 +- Fix FTBFS. Thanks @limb for the hotfix. +- Upstream work ongoing for improved support with newer versions of the C programming language and compilers. + +* Sat Jan 17 2026 Fedora Release Engineering - 1.0.3-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 1.0.3-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 1.0.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jul 20 2024 Fedora Release Engineering - 1.0.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Sat Jan 27 2024 Fedora Release Engineering - 1.0.3-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild @@ -74,12 +91,12 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6 * Fri Jul 23 2021 Fedora Release Engineering - 1.0.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild -* Tue Mar 02 2021 Justin W. Flory - 1.0.3-1 +* Tue Mar 02 2021 Justin Wheeler - 1.0.3-1 - Fix reused integers from being optimized out. - Props to Jan Drögehoff (FAS: sentry) for sending this fix upstream to avoid carrying a Fedora-specific patch. - Remove grues. -* Wed Feb 17 2021 Justin W. Flory - 1.0.2-6 +* Wed Feb 17 2021 Justin Wheeler - 1.0.2-6 - Remove compiler optimization flag to workaround segfault while upstream change is assessed * Thu Jan 28 2021 Fedora Release Engineering - 1.0.2-5 @@ -88,12 +105,12 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6 * Wed Jul 29 2020 Fedora Release Engineering - 1.0.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -* Tue Mar 03 2020 Justin W. Flory - 1.0.2-3 +* Tue Mar 03 2020 Justin Wheeler - 1.0.2-3 - Add manpage alias for zork, to match binary executable - Add upstream 'history' file as a doc -* Tue Apr 30 2019 Justin W. Flory - 1.0.2-2 +* Tue Apr 30 2019 Justin Wheeler - 1.0.2-2 - Use Fedora CFLAGS during compilation -* Mon Apr 29 2019 Justin W. Flory - 1.0.2-1 +* Mon Apr 29 2019 Justin Wheeler - 1.0.2-1 - First zork package