diff --git a/.gitignore b/.gitignore index 30501bd..0749dd7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ /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 99a421f..62d8c4d 100644 --- a/README.md +++ b/README.md @@ -1,133 +1,16 @@ -``` -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. -> -``` +zork +==== -# 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**. +Public Domain original DUNGEON game (Zork I) -## Installation +## About -### Fedora Linux +Public Domain source code to the original DUNGEON game (Zork I). +Released to the PD by Infocom. +Includes source files, headers, and information. -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. +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). diff --git a/sources b/sources index 61464b3..11c813a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (zork-1.1.0.tar.gz) = e72082b4e2e3ff8a68588ce19409fa132921e16e4d15cfef84c9471b3ac989a4d1c251bf2518ddfa7770b803b7dfc40c264377d5a1310688551413b73471cb3d +SHA512 (zork-1.0.3.tar.gz) = def2063a01880eac1fac97a9fb2b4539202f13f9e18ed96275e23d7f73fefa68eff1b62ac256065aaf7603ea4dae3d84488fe8c3757881eb25eea8795e7c7d6a diff --git a/zork-tweak-makefile.patch b/zork-tweak-makefile.patch index 6ed401d..6a81080 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 Wheeler" +From: "Justin W. Flory" Date: Tue, 30 Apr 2019 15:36:07 -0400 Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package @@ -8,9 +8,11 @@ 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 @@ +@@ -42,7 +42,7 @@ TERMFLAG = # 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. @@ -19,8 +21,8 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package # Compilation flags CFLAGS = -g #-static -@@ -70,7 +70,7 @@ - $(CC) $(CFLAGS) -o zork $(OBJS) $(LDFLAGS) $(LIBS) +@@ -69,7 +69,7 @@ dungeon: $(OBJS) dtextc.dat + $(CC) $(CFLAGS) -o zork $(OBJS) $(LIBS) install: zork dtextc.dat - mkdir -p $(BINDIR) $(LIBDIR) $(MANDIR)/man6 @@ -28,7 +30,7 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package cp zork $(BINDIR) cp dtextc.dat $(DATADIR) cp dungeon.6 $(MANDIR)/man6/ -@@ -94,7 +94,7 @@ +@@ -93,7 +93,7 @@ local.o: local.c funcs.h vars.h $(CC) $(CFLAGS) $(GDTFLAG) -c local.c supp.o: supp.c funcs.h vars.h @@ -37,9 +39,11 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package 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 @@ +@@ -24,7 +24,7 @@ FILE *dbfile; #define TEXTFILE "lib:dtextc.dat" #else /* ! __AMOS__ */ #ifdef unix diff --git a/zork.spec b/zork.spec index ae81461..8fcb209 100644 --- a/zork.spec +++ b/zork.spec @@ -1,9 +1,9 @@ Name: zork -Version: 1.1.0 -Release: %autorelease -Summary: Public Domain original DUNGEON game (AKA, Zork) +Version: 1.0.3 +Release: 7%{?dist} +Summary: Public Domain original DUNGEON game (Zork I) -License: LicenseRef-Fedora-Public-Domain +License: Public Domain URL: https://github.com/devshane/zork Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz @@ -15,17 +15,24 @@ BuildRequires: ncurses-devel %description -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. +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). %prep +%global _hardened_build 1 %autosetup %build %make_build \ - CFLAGS="%{optflags} -std=c17" \ + CFLAGS="%{optflags}" \ DATADIR="%{_datadir}/%{name}" \ LDFLAGS="%{__global_ldflags}" @@ -49,30 +56,6 @@ 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 @@ -91,12 +74,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 Wheeler - 1.0.3-1 +* Tue Mar 02 2021 Justin W. Flory - 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 Wheeler - 1.0.2-6 +* Wed Feb 17 2021 Justin W. Flory - 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 @@ -105,12 +88,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 Wheeler - 1.0.2-3 +* Tue Mar 03 2020 Justin W. Flory - 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 Wheeler - 1.0.2-2 +* Tue Apr 30 2019 Justin W. Flory - 1.0.2-2 - Use Fedora CFLAGS during compilation -* Mon Apr 29 2019 Justin Wheeler - 1.0.2-1 +* Mon Apr 29 2019 Justin W. Flory - 1.0.2-1 - First zork package